當階碼是0的時候
(1)0的表示
對於階碼為0或255的情況,ieee754標準有特別的規定:
如果 階碼e 是0 並且尾數m 是0,則這個數的真值為±0(正負號和數符位有關)。
因此+0的機器碼為:0 00000000 000 0000 0000 0000 0000 0000。
-0的機器碼為 0 0000000 000 0000 0000 0000 0000 0000。
當階碼是255的時候
(2)+∞和−∞的表示
如果 階碼e = 255 並且尾數m全是0,則這個數的真值為±∞(同樣和符號位有關)。
因此+∞的機器碼為0 11111111 000 0000 0000 0000 0000 0000。
-∞的機器碼為 1 11111111 000 0000 0000 0000 0000 0000。
nan(not a number)
如果 e = 255 並且 m 不是0,則這不是乙個數(nan)。
根據上面的**,浮點數可以表示-∞到+∞,這只是一種特殊情況,顯然不是我們想要的數值範圍。
以32位單精度浮點數為例,階碼e由8位表示,取值範圍為0-255,去除0和255這兩種特殊情況,那麼指數e的取值範圍就是 e範圍(1,254)e=e-127
1-127=-126
254-127=127。 e範圍(-126,127)
解釋一下:階碼e由8位表示,取值範圍為0-255。去除了0和255 就只剩1~254
(1)最大正數
因此單精度浮點數最大正數值的符號位s=0,階碼e=254,指數e=254-127=127,尾數m=111 1111 1111 1111 1111 1111,其機器碼為:
0 11111110 111 1111 1111 1111 1111 1111。
(−1)s×1.m×2^e (此時e等於127)
=[1+(1-2^-23)]* 2^127
(2)最小正數
最小正數符號位s=0,階碼e=1,指數e=1-127=-126,尾數m=0,其機器碼為
0 00000001 000 0000 0000 0000 0000 0000。
那麼最小正數為:
(−1)s×1.m×2^e (此時e等於-126)
=+(1.0)×2^−126
(3)最大負數
最大負數符號位s=1,階碼e=1,指數e=1-127==-126,尾數m=0,機器碼與最小正數的符號位相反,其他均相同,
1 00000001 000 0000 0000 0000 0000 0000。
那麼最大負數 為:
(−1)s×1.m×2^e (此時e等於-126)
=−(1.0)×2^−126
(4)最小負數
符號位s=0,階碼e=254,指數e=254-127=127
尾數m=111 1111 1111 1111 1111 1111,
其機器碼為:1 11111110 111 1111 1111 1111 1111 1111。
那麼最小負數 為:
(−1)s×1.m×2^e (此時e等於127)
=−[1+(1-2^-23)] ×2^127
浮點數運算的的規格化
在尾數用補碼表示時,規格化浮點數應滿足尾數最高數字與符號位不同,如相同就是不滿足規格化。尾數用雙符號位補碼表示,經過加 減運算之後,可能出現以下六種情況,即 00.1 x x x 11.0 x x x 00.0 x x x 11.1 x x x 01.x x x x 10.x x x x 第 種情況...
浮點數的表示 基本格式 規格化 表示範圍
浮點數表示法是指以適當的形式將比例因子表示在資料中,讓小數點的位置根據需要而浮動。這樣,在位數有限的情況下,既擴大了數的表示範圍,又保持了數的有效精度。階碼 階碼是整數,階符和 m 位階碼的數值部分共同反映浮點數的表示範圍及小數點的實際位置,常用移碼或補碼表示。ieee754標準中採用移碼的表示形式...
浮點數,ieee754標準 補碼規格化數,左規右規
零零散散的東西。浮點加法運算中,為什麼對階時,小階要向大階看齊,而不是大階向小階看齊?因為尾數左移會丟掉高位,右移會丟掉低位,丟掉低位損失的精度可以忽略不計,丟掉高位會損失很大精度。所以對階時,尾數右移,即尾數會減小,為了保持浮點數值不變,階碼要相應的增大。所以要小階向大階看齊,即大階不變,小階增大...