小數在內存中的存儲方式IEEE 754

本文的數學符號使用latex生成, 演示地址http://www.codecogs.com/latex/eqneditor.phpphp

java和C都遵循IEEE 754浮點數標準wiki介紹. 先來回顧一下科學記數法, 好比123這個數字, 使用科學記數法, 能夠寫做:
1.23 x 10^2java

計算機的世界都是二進制的, 123的二進制爲1111011, 能夠記爲:
1.111011 x 10^2
其中整數位1爲固定值, 有效信息有小數位0.111011和指數6 雙精度的浮點數的表示方式爲:code

63          62 .... 52           51  ......    0
     符號位sign   指數偏移exp(11bit)   小數fraction(52bit)
區域 說明
符號位 0爲正數, 1表示負數
指數偏移 實際指數+1023, 這麼作是爲了將負指數轉換成正值; 對於數字0, 這個值爲0
小數 小數點後面的二進制; 對於數字0, 則全爲0

繼續以double類型的123舉例
sign = 0
exp = 1023 + 6 = 1029 = 10000000101B, 不足11bit, 則在前面補0
fraction = 111011, 不足52bit, 則在後面補0
完整的二進制形式爲
0 1000000 0101 1110 11 00 00000000000000000000000000000000000000000000
轉換成16進製爲 40 5E C0 00 00 00 00 00
在小端字節序的系統上(低位存放在低字節上), 顯示爲 00 00 00 00 00 C0 5E 40ip

相關文章
相關標籤/搜索