將整數的二進位制表示轉浮點數的二進位制表示

2021-05-21 17:36:24 字數 1054 閱讀 3181

將整數的二進位制表示轉浮點數的二進位制表示

已知:整數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在記憶體中明明是同乙個數,為什麼浮...