1. 程式人生 > >計算機基礎——浮點數加減運算

計算機基礎——浮點數加減運算

十進位制科學計數法的加法例子

1.123 × 10^5 + 2.560 ×10^

其計算過程為:

1.123 ×10^5 + 2.560 ×10^2 = 1.123 ×10^5 + 0.002560 ×10^5
                                              
=(1.123 + 0.00256) ×10^5
                                              = 1.12556 ×10^


                                              =1.126 ×10^5

進行尾數加減運算前,必須對階最後還要考慮舍入

計算機內部的二進位制運算也一樣!

“對階”操作:目的是使兩數階碼相等

      –小階向大階看齊,階小的那個數的尾數右移,右移位數等於兩個階碼差的

絕對值

      –IEEE 754尾數右移時,要將隱含的1”移到小數部分,高位補0,移出的低位保留到特定的“附加位”

基本要點

(假定:XmYm分別是XY的尾數,  XeYe 分別是XY的階碼 )

(1)  求階差:∆e=Ye – Xe  (Ye > Xe,則結果的階碼為Ye)

(2)  對階:將Xm右移∆e位,尾數變為 Xm*2Xe-Ye(保留右移部分附加位

(3)  尾數加減: Xm*2Xe-Ye ± Ym

(4) 規格化:

      當尾數高位為

0,則需左規:尾數左移一次,階碼減1,直到MSB1或階碼為00000000-126,非規格化數)

      每次階碼減1後要判斷階碼是否下溢(比最小可表示的階碼還要小)

      當尾數最高位有進位,需右規:尾數右移一次,階碼加1,直到MSB1

      每次階碼加1後要判斷階碼是否上溢(比最大可表示的階碼還要大

階碼溢位異常處理:階碼上溢,則結果溢位;階碼下溢到無法用非規格化數表示,則結果為0

(5)如果尾數比規定位數長(有附加位),則需考慮舍入(有多種舍入方式)

(6)運算結果尾數0,則需要將階碼也置0。為什麼?

尾數為0說明結果應該為0(階碼和尾數為全0)。