學習IEEE754標準需要注意的幾個問題

1、什麼是IEEE754標準

用來規範化浮點數,其格式是

(1)32位

=(-1)s×(1.)×2E-127     e-127

(2)64位

=(-1)s×(1.)×2E-1023   e-1023

其中,s是符號位,M是尾數,E是階碼,e是實際的指數值

 

           表 三種形式的IEEE754浮點數格式

參數 單精度浮點數 雙精度浮點數 擴充精度浮點數
浮點數字長 32 64 80
尾數長度P 23 52 64
符號位S 1 1 1
指數長度E 8 11 15
最大指數 +127 +1023 +16383
最小指數 -126 -1022 -16382
指數偏移量 +127 +1023 +16383
可表示的實數範圍 10-38~1038 10-308~10308 10-4932~104932

 浮點數表示格式如下:

數符號S 階符Es 階碼E 尾數M

 

2、爲什麼階碼的偏移量是127?

先看下什麼機器零:

(1)當浮點數尾數M=0,無論階碼E爲何值,則該浮點數爲0值

(2)當階碼的值遇到比它所能表示的最小值還小時,不管尾數M爲何值,則浮點數爲0值

(1)、(2)中的零值稱爲機器零

以32位浮點數爲例:

"當階碼E 爲全0且尾數M 也爲全0時,表示的真值x 爲零,結合符號位S 爲0或1,有正零和負零之分。當階碼E 爲全1且尾數M 爲全0時,表示的真值x 爲無窮大,結合符號位S 爲0或1,也有+∞和-∞之分。這樣在32位浮點數表示中,要除去E 用全0和全1(255)10表示零和無窮大的特殊情況,指數的偏移值不選128(10000000),而選127(01111111)。對於規格化浮點數,E 的範圍變爲1到254,真正的指數值e 則爲-126到+127。因此32位浮點數表示的絕對值的範圍是10-38~1038(以10的冪表示)。"——引自 白中英<<計算機組成原理>>

S(1位)    E(8位)        M(23位)    N(32位) 
符            0                0            (-1)S *2E-127·(1.M) 爲規格化數                                    
               0               不等於0      (-1)S*2-126*(0.M) 爲非規格化數
號       1到254之間     不等於0    (-1)S*2E-127*(1.M) 爲規格化數
              255            不等於0      NaN(非數值)
位           255                0           無窮大 

其中紅色字0、1表示隱含位,注意當數字N爲非規格化數或是0時,隱含位是0。

如果選擇偏移值128時,假設指數(不是階碼)爲+127,按照e=E-128,則階碼爲127+128=255,全爲1 ,由上表可知N爲NaN和無窮大

假設指數爲0(包括正0和負0),按e=E-128,則正0+128=128,負0(補碼)+128=0,由上可知E=0時,存在非規格化數

由於8位E中,只有7位有效數字,7位能表示的大小爲0-127,所以偏移量可以在0-127中任取一值,在IEEE754Z中規定取127.

3、爲什麼階碼錶示的最小指數是-126呢?

有2中描述可以得到,當偏移量爲127時,若最小指數是-127,按e=E-127,則127+(-127)=0,E=0,存在非規格化數

故取-126,這也符合E的表示範圍1~254。

發佈了38 篇原創文章 · 獲贊 9 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章