1. 程式人生 > >浮點數加減運算

浮點數加減運算

浮點運算要把階碼和尾數分別處理。

階碼運算定點整數運算,對階碼的運算四種:階碼加1,階碼減1,兩階碼求和,兩階碼求差。

尾數的運算是定點小數運算,運算過程中一般取雙符號位

浮點運算器總是由處理階碼和處理尾數的兩部分組成

浮點數的溢位(Overflow)

當一個數的大小超出了浮點數的表示範圍時,機器無法表示該數,就發生溢位。浮點數的溢位判斷方法與定點數不同,是對規格化數的階碼進行判斷。

當浮點數的階碼大於機器所能表示的最大階碼時(即階碼發生正溢位),此時機器應停止運算,進行出錯中斷處理。

浮點數的尾數運算的溢位可以通過右規消除,所以不算溢位

當浮點數的階碼小於機器所能表示的最小階碼時(即階碼發生負溢位),這時一般規定把該浮點數的尾數強迫置零,作為零處理,機器可繼續執行。

當一個浮點數的尾數為0,不論其階碼為何值,或者階碼的值小於等於都把該浮點數看成零值,稱為機器零。

浮點加法運算

1.對階(Alignment)

2.尾數相加(Mantissa)

完成對階後,將兩浮點數的尾數部分相加,方法與定點小數加法相同

3.規格化處理(Normalize the Result)

對右移的兩種情況做一下舉例說明: 10,110 -> 11,011 01,110 -> 00,111

4.舍入操作(Rounding)

5.檢查階碼是否溢位(Check the Exponent Overflow or Underflow)

若階碼正常,加減運算正常結束;若階碼下溢,要置運算結果為浮點形式的機器零;若階碼上溢,則置溢位標誌

例題