2014年6月13日 星期五

IEEE 754 浮點數表示法

Sign : 正負符號位元,0 表示正數,1 表示負數,佔 1 bit。

Expoent : 指數
單精度 (32 bits) 佔 8 bits,指數範圍 2^(8-1) -1 = 128 - 1 = 127。
雙精度 (64 bits) 佔 11 bits,指數範圍 2^(11-1) -1 = 1024 - 1 = 1023。

Fraction : 分數(小數)
單精度 (32 bits) 佔 23 bits。
雙精度 (64 bits) 佔 52 bits。


範例:
2.34375E-2
= 0.0234375 (dec)


1. 轉二進制
0.0000011 (bin) = 1.1 x 2^6 (bin)
小數部分只有 1


2. 計算指數

單精度為 127 + ( - 6 ) = 121 (dec) = 1111001 (bin)
從最高位元填 0 補滿 8 bits = 01111001 (bin)

雙精度為 1023 + ( - 6 ) = 1017 (dec) = 1111111001 (bin)
從最高位元填 0 補滿 11 bits = 01111111001 (bin)


3. 填入浮點數格式

單精度
 S = 0
 E = 0111 1001
 F = 1000 0000 0000 0000 0000 000 (從後面填 0 補滿 23 bits)
 S + E + F
 = 0 0111 1001 1000 0000 0000 0000 0000 000 (bin)
 = 0011 1100 1100 0000 0000 0000 0000 0000 (bin)
 = 3 C C 0 0 0 0 0 (hex)

雙精度
 S = 0
 E = 0111 1111 001
 F = 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (從後面填 0 補滿 52 bits)
 S + E + F
 = 0 0111 1111 001 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (bin)
 = 0011 1111 1001 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (bin)
 = 3 F 9 8 0 0 0 0 0 0 0 0 0 0 0 0 (hex)



二進制參考:
......
......
......
2^10 = 1024
2^9 = 512
2^8 = 256
2^7 = 128
2^6 = 64
2^5 = 32
2^4 = 16
2^3 = 8
2^2 = 4
2^1 = 2
2^0 = 1
2^-1 = 0.5
2^-2 = 0.25
2^-3 = 0.125
2^-4 = 0.0625
2^-5 = 0.03125
2^-6 = 0.015625
2^-7 = 0.0078125
2^-8 = 0.00390625
2^-9 = 0.001953125
2^-10 = 0.0009765625
......
......
......

沒有留言: