我理解消化后的浮点数存储
昨天開始學習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
轉載于:https://www.cnblogs.com/mobius2018/p/9842575.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的我理解消化后的浮点数存储的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32速度---网页讲解
- 下一篇: flask+redis实现抢购(秒杀)功