1. 程式人生 > 其它 >二進位制浮點數算術標準IEEE 754與轉換例項

二進位制浮點數算術標準IEEE 754與轉換例項

技術標籤:理論其他

IEEE 754標準定義了在計算機系統中,用二進位制表示浮點數的標準。

二進位制浮點數算術標準IEEE 754與轉換例項

二進位制浮點數表示

sign 為符號位 exponent 為指數位(以2為底) fraction為分數部分

Value=sign*exponent*fraction


一、IEEE 754的前世今生

在IEEE 754出現前,各家計算機公司自己使用自己的數值表示標準,當時在移植程式碼時非常困難。1976年,Intel為8086微處理器引入浮點協處理器時意識到,硬體工程師並不善於數值的定義。於是,Intel找到當時最優秀的數值專家--加州大學伯克利分校的 William Kahan 教授,Kahan教授又找了Coonan和Stone協助,共同完成了Intel浮點數格式設計。

IEEE(Institute of Electrical and Electronics Engineers)認識到Intel的浮點表示方案的優秀,決定採用類似Intel的方案作為 IEEE 的標準浮點格式。1985 年推出了二進位制浮點運算標準 IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic,ANSI/IEEE Std 754-1985),該標準限定指數的底為 2,並於同年成為 ANSI 標準。目前,幾乎所有的計算機都支援 IEEE 754 標準,它大大地改善了科學應用程式的可移植性。

IEEE後來又推出了與底數無關的二進位制浮點運算標準--- IEEE 854。1987年,被美國引用為 ANSI 標準。1989 年,國際標準組織 IEC 批准 IEEE 754/854 為國際標準 IEC 559:1989。修訂後,標準號改為 IEC 60559。目前,幾乎所有的浮點處理器完全或基本支援 IEC 60559。

二、IEEE 754定義

IEEE 754定義了四種浮點數值的方式:

單精確度(32位)、雙精確度(64位)、延伸單精確度(43位元以上,很少使用)與延伸雙精確度(79位元以上,通常以80位實現)。只有32位模式有強制要求,其他都是選擇性的。大部分程式語言都有提供IEEE浮點數格式與算術,但有些將其列為非必需的。

二進位制浮點數算術標準IEEE 754與轉換例項

單精度表示(32位)

二進位制浮點數算術標準IEEE 754與轉換例項

雙精度表示(64)

IEEE 標準除定義了表示格式,還定義了以下特殊值:±0、反向規格化的數、±∞ 和 NaN。


十進位制轉換為二進位制例項 (59.25)

整數部分:
59  ➗   2   =29       -----1
29  ➗   2   =14       -----1
14  ➗   2   =7         -----0
7    ➗   2   =3         -----1
3    ➗   2  =1          -----1
1    ➗   2  =0          -----1

小數部分:
0.25 x 2=0.5           ------0
0.5   x 2=1              ------1

按位表示(x86的位元組序):
59.25------>111011.01

二進位制轉十進位制 (111011.01

1-->1*2*2*2*2*2-->32
1-->1*2*2*2*2---->16
1-->1*2*2*2------->8
0-->0*2*2---------->0
1-->1*2------------>2
1-->1--------------->1
  .
0-->0*2的-1次方---->0
1-->1*2的-2次方---->0.25

將值求和:
111011.01---->59.25