32位單精度浮點數(shù)的IEEE表示法_第1頁
32位單精度浮點數(shù)的IEEE表示法_第2頁
32位單精度浮點數(shù)的IEEE表示法_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、float共計32位(4字節(jié))31位是符號位,1表示該數(shù)為負,0反之3023位,一共 8位是指數(shù)位(-128127)22 0位,一共23位是尾數(shù)位,尾數(shù)的編碼一般是原碼和補碼IEEE標準從邏輯上用三元組S,E,M表示一個數(shù)N,如下圖所示:最高4立帯低俺SEMn = (-1)5 x m x 2en,s,e,m分別為N,S,E,M對應(yīng)的實際數(shù)值,而N,S,E,M僅僅是一串二進制位。 S(sign)表示N的符號位。對應(yīng)值 s滿足:n>0時,s=0; *0 時,s=1。 E(exponent)表示N的指數(shù)位,位于S和M之間的若干位。對應(yīng)值e值也可正可負。 M(mantissa)表示N的尾數(shù)位,恰

2、好,它位于N末尾。M也叫有效數(shù)字位(sinificand )、 系數(shù)位(coefficient),甚至被稱作 小數(shù)”。IEEE標準754規(guī)定了三種浮點數(shù)格式:單精度、雙精度、擴展精度。前兩者正好對應(yīng)C語言里頭的float、double或者FORTRAN里頭的real、double精度類型。限于篇幅,本文僅 介紹單精度、雙精度浮點格式。單精度:N共32位,其中S占1位,E占8位,M占23位。雙精度:N共64位,其中S占1位,E占11位,M占52位。值得注意的是,M雖然是23位或者52位,但它們只是表示小數(shù)點之后的二進制位數(shù), 也就是說,假定 M為“010110011”在二進制數(shù)值上其實是“ .0

3、10110011。'而事實上,標準規(guī)定小數(shù)點左邊還有一個隱含位,這個隱含位通常,哦不,應(yīng)該說絕大多數(shù)情況下是1,那什么情況下是 0呢?答案是N對應(yīng)的n非常小的時候,比如小于2A(-126)(32 位單精度浮點數(shù))。不要困惑怎么計算出來的,看到后面你就會明白??傊?,隱含位算是賺來了一位 精度,于是M對應(yīng)的m最后結(jié)果可能是"m=1.010110011”或者“m=0.010110011. ”四、計算 e、m首先將提到令初學(xué)者頭疼的規(guī)格化(normalized) ”、非規(guī)格化(denormalized) ”。噢,其實并沒有這么難的,跟我來!掌握它以后你會發(fā)現(xiàn)一切都很優(yōu)雅,更美妙的是,

4、規(guī)格化、非規(guī)格化本身的概念幾乎不怎么重要。請牢記這句話:規(guī)格化與否全看指數(shù)E!下面分三種情況討論 E,并分別計算e和m:1、 規(guī)格化:當E的二進制位不全為 0,也不全為1時,N為規(guī)格化形式。此時 e被解釋 為表示偏置(biased )形式的整數(shù),e值計算公式如下圖所示:上圖中,|E|表示E的二進制序列表示的整數(shù)值 ,例如E為"10000100",貝U |E|=132,e=132-127=5。k則表示E的位數(shù),對單精度來說,k=8,則bias=127,對雙精度來說,k=11,則 bias=1023。此時m的計算公式如下圖所示:標準規(guī)定此時小數(shù)點左側(cè)的隱含位為1,那么m=|1.

5、M|。如M="101",則|1.M|=|1.101|=1.625, 即 m=1.625(.101 = 2A(-1)*1 + 2A(-2)*0 + 2A(-3)*1 = 0.625)2、非規(guī)格化:當 E的二進制位全部為 0時,N為非規(guī)格化形式。此時 e, m的計算都 非常簡單。注意,此時小數(shù)點左側(cè)的隱含位為0。 為什么e會等于(1-bias)而不是(-bias),這主要是為規(guī)格化數(shù)值、非規(guī)格化數(shù)值之間的平滑過渡設(shè)計的。后文我們還會繼續(xù)討論。有了非規(guī)格化形式,我們就可以表示0 了。把符號位S值1,其余所有位均置0后,我們得到了 -0.0;同理,把所有位均置 0,則得到+0.0。

6、非規(guī)格化數(shù)還有其他用途,比如表示 非常接近0的小數(shù),而且這些小數(shù)均勻地接近0,稱為逐漸下溢(gradually underflow) 屬性。3、 特殊數(shù)值: 當E的二進制位全為1時為特殊數(shù)值。此時,若M的二進制位全為0, 則n表示無窮大,若 S為1則為負無窮大,若 S為0則為正無窮大;若M的二進制位不全 為0時,表示NaN(Not a Number),表示這不是一個合法實數(shù)或無窮,或者該數(shù)未經(jīng)初始化。五、范例仔細研讀第四點后,再回憶一下文章開頭計算n的公式,你應(yīng)該寫出一個浮點編碼的實際值n 了吧? 還不能嗎?不急,我先給你示范一下。我們假定N是一個8位浮點數(shù),其中,S占1位,E占4位,M占3位

7、。下面這張表羅列了N可能的正數(shù)形式,也包含了e、m等值,請你對照著這張表,重溫一下第四點,你會慢慢明白的。說實在的,這張表花了 我不少功夫呢,幸好TeX畫表格還算省事!這張表里頭有很多有趣的地方,我提醒一下:看N列,從上到下,二進制位表示是均勻遞增的,且增量都是一個最小二進制位。這不是偶然,正是巧妙設(shè)計的結(jié)果。觀察最大的非規(guī)格數(shù),發(fā)現(xiàn)恰好就是M全為1, E全為0的情況。于是我們求出最大的非規(guī)格數(shù)為:上面的公式中,h為M的位數(shù)(如范例中為3)。注意,公式等號右邊的第一項同時又是 最小規(guī)格數(shù)的值(如范例中為 8/512 );第二項則正是最小非規(guī)格數(shù)的值(如范例中為12)即該浮點數(shù)能表示的最小正數(shù)。看m列,規(guī)格化數(shù)都是1+ x的形式,這個1正是隱含位1;而非規(guī)格化數(shù)隱含位為0,所以沒有"1+"。看n列,非規(guī)格化數(shù)從上到下的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論