2008年2月25日 星期一

IEEE 754浮點數表示

稍早突然想到這個東西,我馬上就上網找了相關資料,找到了一個換算的網頁工具:
http://babbage.cs.qc.edu/IEEE-754/Decimal.html
紐約皇后大學電腦工程的網頁,以下以單精準為例。

IEEE 754內容為二進位表示(也就是只有0和1),全長32 bits,共分成三個部份
括號內為其佔用長度
(1) S:0表示正,1表示負
(8) E:指數項,其值為指數項加上127
(23)M:經過正規化後的資料

做一個範例會比較容易瞭解
ex: 將-120.125以IEEE 754浮點數表示
sol:
將120.125(負號先不管)轉成2進位=>1111000.001
接下來做正規化,1111000.001 = 1.111000001 x 2^6
在個位數的地方一定要留下1,也就是紅色的位置,IEEE 754這樣的設計是為了能夠多存一個數以增加精準度。接下來將紅色的1與小數點拿掉,把後面那串111000001放到M,然後右邊補零補到滿23個數字。那現在我們有了以下資料:
1________11100000100000000000000 (最開頭的1表示負號)

接下來是中間的E指數部份,現在我們的指數為6(∵2^6), 將他加上127,得到133,轉成二進位即可放入E。結果如下:
S E M
1 10000101 11100000100000000000000

以下為一些特殊狀況:
E=0 M=0:表示0
E=0 M≠0:未正規化的數字
E=255 M=0:表示無限大
E=255 M≠0:NaNs (Not a Number)

以上若有錯誤歡迎指正

沒有留言: