浮點數表示(IEEE 754標準浮點格式)

2021-09-23 18:35:51 字數 1773 閱讀 9182

浮點數的一般表示形式為:

乙個十進位制數n可以寫成:n = 10e×m

乙個二進位制數n可以寫成:n = 2e×m

其中, m稱為浮點數的尾數,是乙個純小數;e是比例因子的指數,稱為浮點數的指數,是乙個整數。在計算機中表示乙個浮點數時,一是要給出尾數m,用小數形式表示;二是要給出指數e,用整數形式表示,常稱為階碼。尾數部分給出有效數字的位數,因而決定了浮點數的表示精度;階碼部分指明了小數點在資料中的位置,因而決定了浮點數的表示範圍。浮點數也是有符號數.

|  s  |    e    |    	m		|
s為尾數的符號位;佔1位;

e為階碼,緊跟在符號位之後,佔m位;

m為尾數,放在低位部分,佔n位。

ieee標準從邏輯上採用乙個三元組來表示乙個數n,它規定基數為2,符號位s用0和1分別表示正和負,尾數m用原碼表示,階碼e用移碼表示。根據浮點數的規格化方法,尾數域的最高有效位總是1,由此,該標準約定這一位不予儲存,而是認為隱藏在小數點的左邊,因此,尾數域所表示的值是1.m(實際儲存的是m),這樣可使尾數的表示範圍比實際儲存多一位。為了表示指數的正負,階碼e通常採用移碼方式來表示,將資料的指數e 加上乙個固定的偏移量後作為該數的階碼,這樣做既可避免出現正負指數,又可保持資料的原有大小順序,便於進行比較操作。

目前,大多數高階語言都按照ieee-754標準來規定浮點數的儲存格式。ieee-754標準規定,單精度浮點數用4位元組(即32位)儲存,雙精度浮點數用8位元組(即64位)儲存,如圖2-3所示:

單精度格式(32位):符號位(s)1位;階碼(e)8位,階碼的偏移量為127(7fh);尾數(m)23位,用小數表示,小數點放在尾數域的最前面;

雙精度格式(64位):符號位(s)1位;階碼(e)11位,階碼的偏移量為1023(3ffh);尾數(m)52位,用小數表示,小數點放在尾數域的最前面。

在ieee-754標準中,乙個規格化的32位浮點數x的真值可表示為:

x = (-1)s×(1.m)×2 e-127       e = e-127  

e為階碼即指數的真值

在ieee-754標準中,乙個規格化的64位浮點數x的真值可表示為:

x = (-1)s×(1.m)×2 e-1023       e = e-1023        

e為階碼即指數的真值

例如:

-1280採用ieee-754標準單精度浮點數格式表示為:

c4808000h

由於雙精度格式的原理與單精度格式相同,僅僅是表示的位數有所增加,所以,下面主要介紹單精度格式(32位)浮點數的表示方法。

當乙個浮點數的尾數為 0,不論其階碼為何值,或者當階碼的值遇到比它所能表示的最小值還小時,不管其尾數為何值,計算機都把該浮點數看成零值,稱為機器零。

當階碼e為全0且尾數m也為全0時,表示的真值x為零,結合符號位s為0或1,有正零和負零之分。當階碼e為全1且尾數m也為全0時,表示的真值x為無窮大(∞),結合符號位s為0或1,有+∞和-∞之分。這樣,在32位浮點數表示中,要除去e用全0和全1(255)表示零和無窮大的特殊情況,因此,階碼e的取值範圍變為1~254,指數的偏移量不選128(10000000b),而選127(01111111b)。對於32位規格化浮點數,真正的指數值e為-126~+127,因此,數的絕對值的範圍是2-126~2127≈10-38~1038。

IEEE754標準浮點數的轉換

對於乙個十進位制的的數字,當我們需要轉化為浮點數時需要按照一定的規則,而ieee754是現在應用比較廣泛的一種標準,下面是關於該標準的一些轉化規則。浮點數表示的格式 單精度 總位數 32位 符號位 1 階碼位即指數字 8 尾數字 23 指數偏移量 127 雙精度 總位數 64位 符號位 1 階碼位即...

單精度浮點數(IEEE754)

單精度浮點數佔據4個位元組,4個位元組的分配如下 a 第一位為符號位,0表示正,1表示負 b 第2 9位為階碼,採用移碼表示 c 第10 32位為尾數,採用原碼表示。1 給定32位串,如何轉換成十進位制數 假設記憶體中存在32位串 cd cc 08 41。因為intel cpu採用little en...

IEEE754浮點數精度轉換

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