學習筆記 浮點數的表示

2021-08-07 17:24:59 字數 934 閱讀 3273

一:二進位制定點法

如:0.011       那麼它表示1/8+2/8=3/8;

可以看出它並不能精確地表示每乙個小數值,在不提高位的情況下只能盡量選擇最接近的值。比如1/5,十進位制可以表示為0.2,但2進製不能精確表示。

二:ieee浮點法:

公式:v=(-1)^s*m*(2^e);

v表示數值。

s表示符號,s=0時為正,s=1時為負。

m表示表示尾數,當為非規格化時,m=f,當為規格化時m=f+1;

e為階碼;

對於乙個階碼位是k,尾數字為n的數有以下情形:

1.規格化時(即k位不全為0和全為1):

階碼 e=e-bias;          其中e表示為k位無符號整數,bias表示偏量 bias=2^(k-1)-1;

尾數 m=1+f;             其中f為小數。

2.非規格化時(即k位全為0的情況):

階碼 e=1-bias;          注:這樣表示的原因是為了和規格化所表示的數平滑連線

尾數 m=f;

3.特殊值(即k為全為1的情況):

這種情況下又分三種特殊值:

當小數字全為0的時候,它的數值表示無窮大(小);

當小數字不全為0的時候,它表示為nan(not a number);

例項:假設有乙個用8個位來表達的ieee數,其中符號位佔1位,階碼位佔4位,小數字佔3位

0 0000 000    那麼可以得出k=4;n=3  bias=2^(k-1)-1=7;

那麼0 01001 101所表達的值可以這樣計算:

e=01001=9  -> e=e-bias=9-7=2;

f=0.101=5/8 ->(規格化)m=1+f=1+5/8=13/8;

根據公式v=(-1)^s*m*(2^e):

可得 v=1*(13/8)*2^2=6.25.

浮點數的表示

在定點數表示中存在的乙個問題是,難以表示數值很大的資料和數值很小的資料。例如,電子的質量 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 是乙個確定的常數,不需要在浮點數中明確表示出來。因此,要表示浮點...