將整數的二進位制表示轉浮點數的二進位制表示
已知:整數3490593(16進製表示為0x354321)。
求:其對應的浮點數3490593.0的二進位制表示。
解法如下:
先求出整數3490593的二進位制表示:
h: 3 5 4
3 2
1
b: 0011
0101 0100 0011 0010
0001
│←──────21─────→│
即:
1.1010101000011001000012
×221
可見,從左算起第乙個1後有21位,我們將這21為作為浮點數的小數表示,但ieee規定的單精度浮點數float由符號位1位,指數域位k=8位,小數域位n=23位構成,因此對上面得到的21位小數字我們還需要補上2個0,得到浮點數的小數域表示為:
[1 0101 0100 0011 0010 0001 00]
float型別的偏置量
bias=2k-1-1=28-1-1=127,但還要補上剛才因為右移作為小數部分的21位,因此偏置量為127+12=148,就是ieee浮點數表示標準:
v = (-1)s×
m×2e
e = e-bias
中的e,此前計算bias=127,剛好驗證了e=148-127=21。
將148轉為二進位制表示為[10010100],加上符號位0,最後得到二進位制浮點數表示[1001010010101010000110010000100],其16進製表示為:
h: 4 a 5 5 0 c 8 4
b: 0100 1010 0101 0101 0000 1100 1000 0100
│←────21─────→│
1│←─8─→| ←─────23─────→│
這就是浮點數3490593.0(0x4a550c84)的二進位制表示。
浮點數的二進位制表示
前幾天,我在讀一本c語言教材,有一道例題 includevoid main void 執行結果如下 num的值為 9 pfloat的值為 0.000000 num的值為 1091567616 pfloat的值為 9.000000 我很驚訝,num和 pfloat在記憶體中明明是同乙個數,為什麼浮點數...
浮點數的二進位制表示
日期 2010年6月 6日 1.前幾天,我在讀一本c語言教材,有一道例題 includevoid main void 執行結果如下 num的值為 9 pfloat的值為 0.000000 num的值為 1091567616 pfloat的值為 9.000000 我很驚訝,num和 pfloat在記憶...
浮點數的二進位制表示
1.前幾天,我在讀一本c語言教材,有一道例題 includevoid main void 執行結果如下 num的值為 9 pfloat的值為 0.000000 num的值為 1091567616 pfloat的值為 9.000000 我很驚訝,num和 pfloat在記憶體中明明是同乙個數,為什麼浮...