1. 程式人生 > >我理解消化後的浮點數存儲

我理解消化後的浮點數存儲

百度 static 偏移 浮點數存儲 eight ram 語言 技術 多少

昨天開始學習C語言,記錄下學習筆記:

1. 規定單精度浮點數用32bit表示(4Byte):

首位為符號位(0正1負),

8位指數位(表示小數位應該乘以2的多少次方),

23位小數位(十進制原值用二進制表示並規整為科學計數法後帶一位整數的二進制小數,由於整數位必須為1所以省略整數部分,只保存小數部分)。

2. 規定雙精度浮點數用64bit表示(8Byte):

首位為符號位,

11位指數位,

52位小數位。

3. IEEE規定指數部分需要加上偏移值 技術分享圖片 ,其中的 技術分享圖片 為存儲指數的比特的長度,技術分享圖片 =8時偏移值為127,e=11時偏移值為1023。

4. 以下圖為例:

0.15625(10)= (2^-3 + 2^-5)(10) = 0.00101(2) = (1.01 * 2^-3)(2),

所以階碼為 (-3 + (2^(8-1) - 1))(10) = (-3 + 127)(10) = 124(10) = 0111 1100(2)

小數部分為 1.01 後補21個0後的小數部分,即形成下圖所示的存儲格式。

此為單精度浮點數的存儲方式,雙精度浮點數的存儲方式同理,只不過階碼的移碼是1023(+1023(10))。

技術分享圖片

截圖來源:http://www.runoob.com/cprogramming/c-variables.html

關於IEEE754的更多詳情參見百度百科IEEE754標準:https://baike.baidu.com/item/IEEE%20754/3869922?fr=aladdin

我理解消化後的浮點數存儲