計算機基礎——浮點數加減運算
•十進位制科學計數法的加法例子
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,移出的低位保留到特定的“附加位”上
基本要點
(假定:Xm、Ym分別是X和Y的尾數, Xe和Ye 分別是X和Y的階碼 )
(1) 求階差:∆e=Ye – Xe (若Ye > Xe,則結果的階碼為Ye)
(2) 對階:將Xm右移∆e位,尾數變為 Xm*2Xe-Ye(保留右移部分附加位)
(3) 尾數加減: Xm*2Xe-Ye ± Ym
(4) 規格化:
當尾數高位為
每次階碼減1後要判斷階碼是否下溢(比最小可表示的階碼還要小)
當尾數最高位有進位,需右規:尾數右移一次,階碼加1,直到MSB為1
每次階碼加1後要判斷階碼是否上溢(比最大可表示的階碼還要大)
階碼溢位異常處理:階碼上溢,則結果溢位;階碼下溢到無法用非規格化數表示,則結果為0
(5)如果尾數比規定位數長(有附加位),則需考慮舍入(有多種舍入方式)
(6)若運算結果尾數是0,則需要將階碼也置0。為什麼?
尾數為0說明結果應該為0(階碼和尾數為全0)。