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
......
......
......
沒有留言:
張貼留言