浮點數字
[單精密度浮點表示法][倍精密度浮點表示法][浮點加法][浮點乘法]
下面是MIPS浮點數字的表示法, S 是浮點數字的正負符號(1表示負號),指數放在8位元指數欄位(包括指數的正負符號),有效數字是23位元的小數,這種表示法稱為 sign and magnitude表示法。

一般來說,浮點數字的格式為:(-1)s×F×2e 。F表示有效數字欄位的值,E表示指數欄位的值。
設計者必須在有效數字欄位的寬度與指數欄位的寬度之間取得妥協,因為字組的長度是固定的,從某一個欄位的減少一位元時,就表示另一個欄位多一個位元:增加有效數字欄位的寬度,所能表示的有效數字的位數便提高,但增加指數欄位的寬度時,所能表示的數字範圍便擴大。
有時數字太大而無法表示時,就需要overflow interrupt,此處的溢位表示指數太大,而無法以指數欄位表示。當然有時候可能所要表示的數字太小無法表示時,電腦會以underflow interrupt來提醒使用者。為了降低溢位與短值的可能性,大部份的語言提供一種具有更寬的指數欄位的表示法,在C中稱為double。
倍精密度浮點數字的表示法需要兩個字組,如下圖所示,S是數字的正負位元,指數放在11個位元的指數欄位,有效數字是52位元的小數。

為了使用更多的位元寬度存有效數字,IEEE 754採用隱藏式以1為首正規二進位數字,因此在單精密度表示法中,有效數字的實際寬度是24位元(隱藏的1+23位元的小數)。在倍精密度表示法中,有效數字的寬度是53位元(1+52)。
(-1)s×(1+有效數字)×2e
有效數字表示0與1之間的小數,E表示指數欄位的值。如果將有效數字欄位的位元由左至右地編號S1,S2,S3...,則上面格式所表示的值是
(-1)s×(1+(S1×2-1)+(s2×s-2)+(S3×2-3)+...)×2e
IEEE 754的設計者所想要的浮點表示法是:能夠輕易地做整數運算,這是正負符號位於最高有效位元的原因,可以快速檢查小於、大於、等於0。將指數欄位放在有效數字欄位之前,可以簡化浮點數字的排序,因為只要正負號相同,具有較大指數的數字大於具有較小指數的數字。
當碰到負號的指數時,要做一些改變。利用偏值表示法,真正的指數是指數欄位中的無號指數減去偏值。在IEEE 754的單精密度表示法是採用偏值127,
所以-1是-1+127=126表示,+1是1+127=128表示,因此浮點數字的值是以下列格式表示:
(-1)s×(1+有效數字)×2(指數-偏值)
單精密度表示法指數偏值是127,而倍精密度表示法指數偏值是1023。
| 範例: 試寫出數字-0.75的IEEE 754單精密與倍精密二進位表示法 解: 單精密表示法是(-1)s×(1+有效數字)×2(指數-127)
因此-0.75是 (-1)1×(1+.100000000000000000002)×2126 倍精密表示法是
(-1)1×(1+.10000000000000000000000000000000000000000000000000002)×21022 |
| 範例: 下面字組所表示的十進位數字是多少?
解: 正負位元是1,指數是129,有效數字是1×2-2=1/4或0.25 (-1)1×(1+有效數字)×2(指數-偏值) =(-1)×(1+0.25)×2(129-127) =-1×1.25×22 =-1.25×4 =-5.0 |
|
| 範例: 將數字0.510與-0.437510相加 解: 首先將兩個數字轉成二進位的正規科學記號。假設有四位元的精密度: 0.510=0.12=0.12x20=1.0002x2-1 -0.437510=-0.01112=-0.01112x20=-1.1102x22 依演算法的步驟:
|
![]() |
| 範例: 將數字0.510與-0.437510相乘 解: 以二進位表示時,變成1.0002x2-1乘以-1.1002x2-2
|