2008年1月29日 星期二

IEEE 754

IEEE 754定義了浮點數的表示方法,目前也廣泛被使用。IEEE有四種格式來表示浮點數:

Single-precision (32-bit)
Double-precision (64-bit)
Single-extended precision (≥ 43-bit)
Double-extended precision (≥ 79-bit)

常用的為Single-precisionDouble-precision,以下就介紹這兩種表示方法

IEEE 754浮點數表示型式,有三個欄位,分別是sign、exponent、fraction,如下圖:



Sign:一個bit,1為負數,0為正數
Exponent:指數部份
Fraction:小數部份

Single-precision的Exponent為8 bits、Fraction為23 bits
Double-precision的Exponent為11 bits、Fraction為52 bits


為了讓指數部份,可以調到最負的指數能為00....002和最正的指數為11..112,所以指數都要加一個偏移值。Single-precision的偏移值為127,Double-precision的偏移值為1023。將實際的指數加上偏移值才是真正填入Exponent欄位的值。
為了讓fraction能用更多的bit來表示,fraction已隱含開頭的1(Leading 1),所以浮點數要用IEEE 754格式,必須先做正規化,讓開頭為1。

下面就舉簡單的例子 (以Single-precision為例):

將十進位-0.75用IEEE 754 single-precision來表示

首先將-0.75轉換成二進位
-0.11

正規化,讓開頭為1
-1.1 x 2^-1

計算exponent的值,將-1加上偏移值127
Exponent = -1 + 127 = 126

所以我們就得到這三個欄位的值:
負數,所以Sign = 1
Exponent = 12610 = 011111102
Fraction = 1


整個表示出來如下:
1 01111110 10000000000000000000000

4 意見:

匿名 提到...

真是感謝查到你介紹IEEE754的文章~我在課堂上剛好卡在這裡不是很了解~看到你的解說都懂了~謝謝囉!!!

Howard 提到...

很高興能幫助到你~~~

匿名 提到...

很開心能看到你的文章 希望你能發表更多更多

Howard 提到...

恩,我會盡量把一些所學會的東西多和大家分享,順便也可以幫助自己記憶。