浮點數階碼的計算和表示

2022-02-25 10:10:41 字數 606 閱讀 3493

關於ieee754中,一般教材提到階碼都是用移碼表示,計算規則卻是偏置值+階數。

舉個栗子:

比如說ieee 754的浮點數表示,在32位浮點暫存器中,-8.25的16進製表示是多少。

我怎麼算都是c1840000h,而答案是c1040000h。

這其中的差別就在階碼上。階碼是用移碼表示的。8.25也就是1000.01,就是1.00001乘以2^3.階碼是3.

問題來了。根據 移碼就是補碼符號位取反,3的補碼是0000011.所以移碼就是10000011;

可是答案裡面說,移碼就是127+3=130.所以是10000010;

準確來說是用階數的移碼減一表示的,所以3的移碼10000011b減一即:10000010b,數值上等於 偏置值+階數,即127+3=130(10000010b)。

這裡的減一也從側面理解了為啥階碼的數值範圍是一般都是1~254 or 1~2046 。比如8位階碼的短浮點數,當階碼為1111 1111b

移碼數值為+127即2的128(127+1即實際的階數)次方已超過短浮點數可表示的範圍,算為無窮大。

浮點數的表示

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