小數在計算機中如何存儲?

2021-01-15 波波Tea

1.72為係數(或尾數)

10^-3為指數

10為指數的基數

-3位為指數的階數

科學計數法表示為1.72E-3,由於1<=1.72<10,因此稱係數是規格化的。單精度浮點數32位=1位符號位+8位指數位+23位有效數字雙精度浮點數64位=1位符號位+11位指數位+52位有效數字下面以單精度浮點數為例(雙精度同理),來看看計算機是如何存儲的。

符號位:1表示負值,0表示正值;

指數位:階數的二進位碼,是一個無符號的整數,但是階數既可以是正數也可以是負數,那麼就需要有一個偏移量(單精度偏移量為127,雙精度偏移量為1023),則真正的階數=階數移碼-偏移量。指數位的範圍為0~255,但不包括0和255,因為它倆有特殊含義(下面會說到),因此單精度浮點數可表示的最大階數為127=254-127,最小階數為-126=1-127;

有效數字:任何一個二進位的科學計數法(規格化)的係數第一位都是1,因此這個1沒有必要存儲,有效數字存儲的都是小數點後23位,因此23位有效數字可表示的精度卻是24位;

符號位s指數位e有效數字m浮點數0、10000、10!=00.0f02550無窮大12550無窮小0、1255!=0NAN


注意:最小值不考慮符號,即係數+指數能表示的最小值;首先,用Java代碼列印出單精度的最大值和最小值。

// 3.4028235E38
System.out.println(Float.MAX_VALUE);
// 不受限制的最小值,1.4E-45
System.out.println(Float.MIN_VALUE);
// 規格化的最小值,1.17549435E-38
System.out.println(Float.MIN_NORMAL);


小數的二進位無法精確地表示,但是整數可以

單精度和雙精度類型混合使用

// 0.8999999999999999
System.out.println(2-1.1);


如上面代碼所示,用Java列印出2-1.1的結果,然後結果卻不是0.9,這是因為0.9的二進位計算機無法表示,下面來做一下演示。0.9 * 21(0.9*2=1.8,取整數部分1)0.8(0.9*2=1.8,取小數部分0.8繼續運算) * 21
0.6 * 2  10.2 * 2  0
0.4 * 2    0
0.8 * 2  1
0.6
計算到這裡大家就能看出來了,出現了循環,因此0.9的二進位是表示不出來的。

浮點數的意思是小數點可以變動,在計算機中是依賴指數實現的。比如56.78*10^0 = 5.678*10^1 = 567.8*10^-1,它們的大小相同,區別是小數點的位置不同,指數的大小也不同;

而定點數,顧名思義就是小數點不能變動,例如Mysql中的decimal類型。

相關焦點

  • 每個C語言程式設計師都應該明白,計算機究竟是如何存儲小數的?
    計算機如何存儲浮點數IEEE-754是如何存儲浮點數的?將小數點移到第一個 1 之後,調整指數位,這樣一來,「尾數+指數」的唯一存儲方式就固定下來了,也即「1.m x 2^n」形式。既然小數點前總是 1,那麼上述標準下的「尾數+指數」的存儲模式甚至都不需要再花費空間存儲小數點前的 1.但是如果數字是零呢?
  • 在編程中,為什麼要把小數叫做浮點數?
    小數為什麼會被成為浮點數?有不少程式設計師雖然能夠很熟練的使用某種程式語言,但是對於小數為什麼會被稱為浮點數卻是不太理解。一個小數的組成:在我國,小數表示由三部分組成,分別是整數+小數點(分隔符)+小數。以上概念看似很簡單,卻是理解浮點數的重要基礎。理解了小數的重要組成部分的話,非常有利於快速的理解浮點數一詞的由來。為方便更加具象的理解,小數組成具體看下圖所示:
  • 計算機基礎:計算機中數據相關知識筆記
    機器數:各種數值在計算機中的表示形式,採用二進位計數制,用0、1 表示,小數點則隱含表表示而不佔位置。機器數分為無符號數(正數)和有符號數(最高位表示正 0、負 1 符號位)。因此引入了浮點數,浮點數是小數位不固定的數,它能表示更大範圍的數。浮點數的表示如下:階符 階碼 整符 尾數2.1 規格化浮點數所能表示的數值範圍由階碼決定,數值的精度由尾數決定。規格化就是將尾數的絕對值限定在區間[0.5,1] 。
  • 計算機專業就業前景及方向如何?
    說起計算機類專業,毫無疑問是當下高考志願填報的最大熱門之一。該類專業在就業端有極高的市場需求,畢業生薪資待遇優厚,備受廣大年輕人關注。那麼計算機專業就業方向及前景如何?3、網絡與信息安全方向,主幹學科為信息安全和網絡工程,學生畢業後可為政府、國防、軍隊、電信、電力、金融、鐵路等部門的計算機網絡系統和信息安全領域進行管理和服務的高級專業工程技術人才。4、通信方向學生畢業後可到信息產業、郵電、交通等機構從事通信技術和電子技術的科研、教學和工程技術工作。
  • 圓周率是個無限不循環小數,我們把它算到10萬億位有什麼意義
    圓周率π是個無限不循環小數,目前已經計算到了小數點後面數十萬億位,但計算它並不是無用功,而是有著多種作用。而在公元5世紀,古代中國著名科學家祖衝之利用了割圓術的方法,確定了π值在3.1415926到3.1415927之間,一下子將圓周率精確到了7位小數,遙遙領先世界。後來微積分登場,西方數學家才漸漸超過了我們。
  • 圓周率沒有盡頭,人類計算機還一直計算,很多人沒想到是這個原因
    但是,即便知道沒有盡頭,世界上還是有很多計算機,會重複的,不放棄的計算圓周率,這到底是為什麼?在數學世界裡,圓周率早就已經證實了就是一個無理數,是一個沒有盡頭並且不循環的數字。在圓周率的小數點後面,有無數個數字。人類能計算的圓周率位數,現在來看是很有限的,遠不及計算機來得快和精確。目前,世界上用計算機算出的圓周率,已經超過了小數點後10萬億位。
  • 將圓周率的小數位算到30多萬億位,數學家這樣做有什麼意義?
    但實際上如果稍微對數學中一些特殊的現象進行關注的話,你還是能夠從中發現樂趣的。例如數學中存在一個我們從小學開始就接觸的數,圓周率π。說到圓周率π,相信很多朋友都能夠背到小數點後七八位,而且很多家長以小孩子能夠背得越多π的小數位為傲。而那些背不得那麼多小數位的人一般就會這麼想,為什麼要花那麼多時間去背這麼多位呢?有什麼用呢?
  • 適用於高精度單片機小數計算的方法介紹
    在單片機的BCD增量算式,線性化處理等過程中,都會遇到一個共同的問題,那就是小數的運算。在單片機當中,對於小數的表現方法一般只有兩種,一種是浮點數一種是定點數。本文就將對單片機中的浮點數進行概述並對其彙編程序設計進行介紹。
  • 小數乘法的這3個問題,是孩子作業中出錯最多的
    上了一段時間的線上直播課,在批改作業的過程中,我發現孩子們在計算小數乘法的題目時,容易出現3種錯誤,並且這3種錯誤頑固不化,總是屢次三番地需要強調訂正。在此,列舉出來僅供大家參考。而在學習「小數乘法」的時候,前面學過的小數加減法和小數乘法在對數位上是不一致的:小數加減法要求「把小數點對齊,相同數位也就對齊了。」
  • 計算機的硬體組成有哪些?計算機的硬體組成介紹
    計算機便是我們經常用到的電腦,電腦有三種,其一為 平板電腦 ,其二是桌上型電腦,其三則為 筆記本電腦 。無論是哪種計算機設備,都可以幫助我們快速計算數值,除此之外,計算機的存儲記憶功能與邏輯功能也是獨一無二的,它可以按照程序運行,達到智能使用的功能。計算機之所以這麼「強大」,正是因為計算機的硬體組成部分具有 高科 技的特點。
  • 計算機發展如何衝破「天花板」
    此次會議經國務院批准,由湖南省人民政府、國家工業和信息化部共同舉辦,旨在為計算機產業搭建一個國際交流平臺,碰撞思想、凝聚共識、深化合作,推動全球計算機產業持續健康發展。華為、騰訊、惠普、戴爾等全球計算機行業代表聚首計算機大會,聚焦計算機生態、計算機未來、網絡安全、人機連接、AI算法、新型計算等領域,碰撞思想、探討未來。
  • 阻擋HPC前行的「最後一公裡」,打破「存儲牆」迫在眉睫
    當下,無論是上天攬月的「嫦娥五號」,飛往火星的「天問一號」,還是下萬米深海潛航的「蛟龍號」,或是抗擊疫情中利用AI進行CT影像識別,幾乎任何一項偉大的科學成就與工業創新,都離不開高性能計算機的強力支撐。
  • 2021年的數字存儲預測第三部分:通用存儲體系結構、NVMe等的發展
    我們將探討通用存儲體系結構(NAS,SAN和對象存儲),NVMe和NVMe-oF(基於結構)以及CXL和GenZ的發展,並討論這些技術如何實現分解和可組合的數據中心。我們還將討論使用特殊和通用加速器的計算存儲和內存處理以及分布式處理的一般增長。最後,我們將研究存儲安全性的發展和需求,以應對勒索軟體和其他網絡安全攻擊。
  • 小數除法不會算?8大模塊梳理計算中的易錯點!備考期末滿分衝刺
    小數除法知識框圖一、除數是整數的小數除法1、小數除以整數:按照整數除法的計算方法計算,注意商的小數點要和被除數的小數點對齊。2、在小數除法中,如果除到被除數的末位仍有餘數,要在被除數小數部分的末尾添0,同時在餘數後面添0,然後繼續除,直到除盡為止。3、整數除以整數:一定要先點小數點,再添0,然後按照「小數除以整數」的計算方法計算。4、如果小數的整數部分不夠除,則在商的個位上商0佔位,對齊被除數的小數點,點上商的小數點,再繼續除,直到除盡為止。
  • 計算機組成原理題庫2
    A、 機—機通信 B、 計算機信息存儲 C、 人機互動答案: C340、MODEM屬於()設備。A、 機—機通信 B、 計算機信息存儲 C、 人機互動答案: A341、微型計算機中,VGA代表()。
  • MySQL中的存儲引擎是什麼意思?
    導讀:本篇文章是想聊聊MySQL為什麼要出現存儲引擎這項技術。「存儲引擎」從字面理解,「存儲」的意思的存儲數據。「引擎」一詞來源於發動機,它是發動機中的核心部分。在軟體工程領域,相似的稱呼有「遊戲引擎」、「搜尋引擎」,它們都是相應程序或系統的核心組件。
  • 《計算機結構原理初步》~試講稿~高中信息技術
    我是高中信息技術組五號考生,我抽到的題目是《計算機結構原理初步》。下面開始我的試講。上課,同學們,請坐。環節一、導入新課我們學習了計算機與信息技術的關係,也了解了計算機在現實生活中的重要意義,那麼計算機是如何產生的呢?它的內部又有哪些部分組成呢?帶著這一系列的問題,這節課就來解答這些問題。我們首先解決第一個問題。
  • 小學信息技術教案:《認識計算機(一)》
    教學要求:通過教學,使學生認識計算機是由計算機硬體和軟體組成,知道計算機各個部分的名稱及主要用途,培養學生學習計算機的興趣。教學過程:一、引入新課:計算機是20世紀人類最偉大的發明之一,目前,它已被廣泛的應用於社會的各個領域,成為人類的得力助手。你家裡有計算機嗎?你知道它是由哪些部分組成的嗎?
  • 揭秘「量子計算機」工作原理
    自上世紀90年代提出量子計算機概念以來,技術和研發費用是限制這類逆天設備發展的壁壘,期間加拿大D-Wave公司曾宣稱已經研發出量子計算機,但是業界對這臺設備仍持質疑態度。慶幸的是,近幾年我們能夠看到業界在量子計算機上取得的突破,或許,第一臺真正意義上的量子計算機很快就會來了!