摘自:http://www.duote.com/tech/5/14691.html
根據國際標准IEEE 754,任意一個二進制浮點數V可以表示成下面的形式:
V = (-1)^s×M×2^E
(1)(-1)^s表示符號位,當s=0,V為正數;當s=1,V為負數。
(2)M表示有效數字,大於等於1,小於2。
(3)2^E表示指數。
IEEE 754規定,對於32位的浮點數,最高的1位是符號位s,接着的8位是階碼E,剩下的23位為有效數字M。
| 符號位S | 階碼(E+偏移量) | 尾數M |
| 1位 | 8位 | 23位 |
(1)尾數M
前面說過,1≤M<2,也就是說,M可以寫成1.xxxxxx的形式,其中xxxxxx表示小數部分。IEEE 754規定,在計算機內部保存M時,默認這個數的第一位總是1,因此可以被舍去,只保存后面的xxxxxx部分。比如保存1.01的時候,只保存01,等到讀取的時候,再把第一位的1加上去。這樣做的目的,是節省1位有效數字。以32位浮點數為例,留給M只有23位,將第一位的1舍去以后,等於可以保存24位有效數字。
(2)階碼
階碼 = 指數 E+ 偏移量,這種階碼表示方式為移碼。據猜測在計算機中存儲的是階碼,實際求值的時候需要減去偏移量。
階碼為一個無符號整數(unsigned int)。這意味着,如果E為8位,它的取值范圍為0~255,但有下面的情況:
- 當階碼為全0且尾數M也為全0時,表示的真值X為零,結合符號位S為0或1,有正零和負零之分。
- 當階碼為全1且尾數M也為全0時,表示的真值X為無窮大(∞),結合符號位S為0或1,有+∞和-∞之分。如果M不全位0,表示這不是一個數(NaN)。
除去E用全0和全1(255)表示零和無窮大的特殊情況,因此,階碼的取值范圍變為1~254,為了表示小數,設置偏移量為127,那么實際表達的數值的指數范圍為-126 ~ +127.
求浮點數最大表示的整數是多少:
作者:牛客2862122號
鏈接:https://www.nowcoder.com/questionTerminal/68eb1274b8ed4ead8d1b3b27a0c54b8b
來源:牛客網
