本文的數學符號使用latex生成, 演示地址http://www.codecogs.com/latex/eqneditor.phpphp
java和C都遵循IEEE 754浮點數標準wiki介紹. 先來回顧一下科學記數法, 好比123
這個數字, 使用科學記數法, 能夠寫做:
1.23 x java
計算機的世界都是二進制的, 123的二進制爲1111011, 能夠記爲:
1.111011 x
其中整數位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