浮點數的運算

2021-08-09 10:07:48 字數 1047 閱讀 1940

規格化的浮點數因為儲存是使用類似科學計數法的表示,因此計算方法大體上與科學計數法較為類似。

浮點加減法的一般步驟(減法本質也是加法):

對於二進位制形式的兩個浮點數相加

1. 對階:對於兩個規格化浮點數,將較小的指數的數向較大指數的數對齊。通過移動小數點實現。如果出現有效數字位數不能滿足的情況,進行近似。

2. 相加尾數(有效數):將兩個二進位制數的尾數相加。

3. 規格化處理:對已經求得的結果進行規格化處理。即移動小數點位數,使之滿足規格化的形式。

4. 按照有效數字位數進行捨入處理。

5. 判斷是否出現溢位。

對於浮點數(−

1)s(

1+m)

×2e 溢位有幾種情況:

(1)階碼上溢:

e>

128 ,將其處理為正負無窮。

(2)階碼下溢:

e<

−127

,將其處理為0;

(3)尾數上溢:

m>

1 ,需要右移尾數1位且將e=

e+1 ;

(4)尾數下溢:尾數右移過程中,最低有效位超出表示的範圍,需要進行捨入處理。

浮點數的乘除法較為簡單,只需要尾數相乘,階碼(指數)相加,然後進行規格化處理和捨入就可以了。

例如計算

0.510×(

−0.437510)

,設有效位數為4(由

−0.4375

決定)。

0.510=1

2×2−

1 −0.437510=

−1.1102×

22階碼相加可得e=

−3尾數相乘可得

1.1100002

不需要再進行規格化,擷取4位

1.110

也無須捨入。

同時符號位為負,因此結果為

−1.1102×

2−3 。

ieee754標準保證在進行捨入之前,在右邊總是多保留兩位。分別稱之為保護位(guard)和捨入位(round)。使用保護位和捨入位能夠提供更精確的捨入。

浮點數運算

浮點數運算的公式 n m re n代表浮點數 m代表尾數 r代表基數 e代表指數 所謂浮點數就是類似我們高中學的科學計數法 比如 1000 就表示為 1.0 103 那麼浮點型計算就是兩個用科學計數法表示的數之間進行的計算 例如 1.0 102 1.19 103 該如何計算 步驟 1.對階 所謂對階...

浮點數運算

今天學習了浮點數運算 加減乘除 浮點數運算主要包括兩部分 指數運算和尾數運算。在ieee754標準下,指數運算就是階碼的運算,類似於無符號數運算。尾數運算是原碼運算。之前一直很疑惑為什麼前面的教材在介紹原碼運算 加減乘除 所舉的例子都是小數運算。現在猜想那部分內容可能只是為了浮點數運算做鋪墊,這裡才...

php 浮點數運算

php r echo 0.1 0.7 0.8 true false 了解浮點運算的都不難理解以上 執行時會得到false 這是因為很多的10進製數都不能精確的轉成2進製,或如果要精確轉換的話需要的二進位制數太長,會捨棄掉末尾部分,只儲存一定的精度。比如0.1 十進位制 0.0001100 1100 ...