浮點數的表示方法

2021-09-10 21:10:04 字數 2032 閱讀 9631

把乙個數的有效數字和數的範圍在計算機的乙個儲存單元中分別予以表示。這種把數的範圍和精度分別表示的方法,相當於數的小數點位置隨比例因子的不同而在一定範圍內可以自由浮動,所以稱為浮點表示法

在計算機中乙個任意二進位制數n可以寫成: n=2^e.m

其中m稱為浮點數的尾數,是乙個純小數。e是比例因子的指數,稱為浮點數的指數,是乙個整數。比例因子的基數2對二進記數制的機器是乙個常數。

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

按ieee754標準,32位浮點數和64位浮點數的標準格式為

不論是32位浮點數還是64位浮點數由於基數2是固定常數,對每乙個浮點數都一樣,所以不必用顯示方式來表示它。

32位的浮點數中,s是浮點數的符號位,佔1位,安排在最高位,s=0表示正數,s=1表示負數。m是尾數,放在低位部分,占用23位,小數點位置放在尾數域最左(最高)有效位的右邊。e是階碼,占用8位,階符採用隱含方式,,即採用移碼方法來表示正負指數。移碼方法對兩個指數大小的比較和對階操作都比較方便,因為階碼域值大者其指數值也大。採用這種方式時,將浮點數的指數真值e變成階碼e時,應將指數e加上乙個固定的偏移值127(01111111),即e=e+127。

為了提高資料的表示精度,當尾數的值不為0時,尾數域的最高有效位應為1,這稱為浮點數的規格化表示。否則以修改階碼同時左右移動小數點位置的辦法,使其變成規格化數的形式。

在ieee754標準中,乙個規格化的32位浮點數x的真值表示為

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

e = e - 127

其中尾數域所表示的值是1.m。由於規格化的浮點數的尾數域最左位(最高有效位)總是1,故這一位經常不予儲存,而認為隱藏在小數點的左邊。於是用23位欄位可以儲存24位有效數。

64位的浮點數中符號位1位,階碼域11位,尾數域52位,植樹偏移值是1023.因此規格化的64位浮點數x的真值為

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

e = e - 1023

例題

1. 問題:若浮點數x的754標準儲存格式為(41360000)16,求其浮點數的十進位制數值。

解:將16進製制數展開後,可得二進位制數格式為

指數e=階碼-127=10000010-01111111=00000011=(3)10

包括隱藏位1的尾數1.m=1.011 0110 0000 0000 0000 0000=1.011011

於是有x=(-1)^s x 1.m x 2^e=+(1.011011) x 2^3 = +1011.011=(11.375)10

2. 問題:將數(20.59375)10轉換成754標準的32位浮點數的二進位制儲存格式。

解:首先分別將整數和小數部分轉換成二進位制數:

20.59375 = 10100.10011

然後移動小數點,使其在第1、2位之間

10100.10011 = 1.010010011 x 2^4 e = 4

於是得到

s = 0, e = 4 + 127 = 131, m = 010010011

最後得到32位浮點數的二進位制儲存格式為

0100 0001 1010 0100 1100 0000 0000 0000 = (41a4c000)16

浮點數的表示

在定點數表示中存在的乙個問題是,難以表示數值很大的資料和數值很小的資料。例如,電子的質量 9 10 28克 和太陽的質量 2 1033克 相差甚遠,在定點計算機中無法直接表示,因為小數點只能固定在某乙個位置上,從而限制了資料的表示範圍。為了表示更大範圍的資料,數學上通常採用科學計數法,把資料表示成乙...

浮點數的表示

日期 2010年6月 6日 1.前幾天,我在讀一本c語言教材,有一道例題 includevoid main void 執行結果如下 num的值為 9 pfloat的值為 0.000000 num的值為 1091567616 pfloat的值為 9.000000 我很驚訝,num和 pfloat在記憶...

浮點數的表示

浮點數,是指小數點在資料中的位置可以左右移動的資料。它通常被表示成 n m re 這裡的m mantissa 被稱為浮點數的尾數,r radix 被稱為階碼的基數,e exponent 被稱為階的階碼。計算機中一般規定r為2 8或16 是乙個確定的常數,不需要在浮點數中明確表示出來。因此,要表示浮點...