浮點數規格化

2021-10-01 20:38:56 字數 1655 閱讀 6843

當階碼是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標準 補碼規格化數,左規右規

零零散散的東西。浮點加法運算中,為什麼對階時,小階要向大階看齊,而不是大階向小階看齊?因為尾數左移會丟掉高位,右移會丟掉低位,丟掉低位損失的精度可以忽略不計,丟掉高位會損失很大精度。所以對階時,尾數右移,即尾數會減小,為了保持浮點數值不變,階碼要相應的增大。所以要小階向大階看齊,即大階不變,小階增大...