單精度浮點數(IEEE754)

 

單精度浮點數佔據4個字節,4個字節的分配如下:

(a)第一位爲符號位,0表示正,1表示負;

(b)第2~9位爲階碼,採用移碼錶示;

(c)第10~32位爲尾數,採用原碼錶示。

 

(1)給定32位串,如何轉換成十進制數

假設內存中存在32位串:CD CC 08 41。因爲INTEL CPU採用little endian存儲方式,所以其真實的值爲:41 08 CC CD。將其寫成二進制形式:

 

0  10000010  00010001100110011001101

該浮點數爲正數,階碼爲10000010,尾數部分爲00010001100110011001101。因爲在IEEE754中,單精度浮點數有規格化處理,所以其真正尾數部分爲1.00010001100110011001101,其中‘.’爲小數點。

移碼的10000010表示3(127+3),所以尾數部分的小數點必須向右移動3位才能得到真實的數據。真實數據爲:

1000.10001100110011001101,其十進制值爲:

8+0.5+1/32+1/64+1/256+1/512+1/4096+1/2^13+1/2^16+1/2^17+1/2^20+1/2^21+1/2^23 ~= 8.55

 

(2)如何將十進制數轉換成二進制的單精度浮點數

 

給定數123.5,其對應的二進制原碼爲:1111011.1,左移六位得:(1.1110111)*2^6。根據規格化處理,所有尾數部分都轉化爲1.M形式,其中整數部分1可以省略,所以尾數部分爲:1110111。因爲左移六位,其階碼值爲6,階碼的移碼錶示爲(127+6)=133=10000101。有了尾數部分和階碼部分,我們就可以得到123.5的單精度浮點數位串:

0 10000101 11101110000000000000000

其十六進制表示爲:42 F7 00 00,按照little endian存儲方式,其內存值爲:00 00 F7 42



欲詳細瞭解原碼、反碼、補碼的細節,請參閱牛人的文章:http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html 

發佈了46 篇原創文章 · 獲贊 6 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章