二進位制浮點數算術標準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浮點數格式與算術,但有些將其列為非必需的。
單精度表示(32位)
雙精度表示(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