單精度浮點數(IEEE754)

2021-05-22 14:48:40 字數 1038 閱讀 8390

單精度浮點數佔據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 

IEEE754浮點數精度轉換

最近在利用串列埠讀取溫度採集模組上面的資料時發現返回過來的資料是16進製制的ieee754型別,很顯然這不是我們想要看到的,因此我們必須對他進行解析 因為我用的是j a,所以首先翻了相關文件,發現還真提供的有 float.intbitstofloat hex 當然自己也可以手寫乙個,這時我們就需要了...

IEEE754浮點32位單精度雙字轉換

eee754 32位浮點數的結構 這是將 1313.3125轉換為ieee 32位浮點格式的規則 單精度二進位制浮點數儲存在乙個32位的字中 在這種格式中,初始位沒有被抑制,基數點被設定在尾數的左邊,以4位為單位遞增。由於基數是16,所以這種形式的指數大約是ieee 754中相同指數的兩倍,為了在二...

浮點數的運算原理 IEEE 754

ieee二進位制浮點數算術標準 ieee 754 是20世紀80年代以來最廣泛使用的浮點數運算標準,為許多cpu與浮點運算器所採用。ieee 754規定了四種表示浮點數值的方式 單精確度 32位 雙精確度 64位 延伸單精確度 43位元以上,很少使用 與延伸雙精確度 79位元以上,通常以80位元實做...