浮點數不能直接相加。下面以乙個簡單的8位尾數和乙個未對齊的指數為例說明浮點運算,a = 1.0101001×24,b = 1.1001100×23。若要計算這兩個數的乘積,應將尾數相乘,指數相加;即
a·b = 1.0101001×24×1.1001100×23
= 1.0101001×1.1001100×23+4
= 1.000011010101100×28.
現在來看看浮點加法。筆算時人們會像下面那樣自動地將a與b的小數點對齊,
10101.001
然而,由於浮點運算元已經被表示為規格化形式,計算機在進行浮點加法時面臨以下問題:
1.0101001×24
+1.1001100×23
為了對齊指數,計算機必須執行下面的步驟:
第1步,找出指數較小的那個數。
第2步,使兩個數的指數相同。對於指數小的那個數,指數加幾,就將尾數右移幾位。
第3步,尾數相加(或相減)。
第4步,如果有必要,將結果規格化(後規格化)。
在這個例子裡,a = 1.0101001×24且b = 1.1001100×23。b的指數比a的小,應將b的指數加1,使它與a的指數相等。由於指數加1會使b的值增加2倍,應將b的尾數除2,即將其右移1位。這兩個操作使b的值保持不變,但被表示為0.110011×24。現在就可以將a與非規格化的b相加了。
a = 1.0101001×24
b = + 0.1100110×24
10.0001111×24
加法的結果不是規格化數,因為它的整數部分是102。因此需要對結果作規格化處理。尾數右移1位並將指數加1,得到1.00001111×25。結果的位數的精度為小數點後有8位數字,而a和b的尾數在小數點後只有7位數字。
圖2-10給出了浮點加法運算的流程。對於這個流程圖,以下幾點需要注意。
1)因為指數有時與尾數字於同乙個字中,在加法過程開始之前必須將它們分離開(解壓縮)。
2)如果兩個指數的差大於p+1,這裡p為尾數的位數,較小的那個數由於太小而無法影響較大的數,結果實際上就等於較大的那個數。例如,1.1010×260+1.01×2-12的結果為1.1010×260,因為指數之差為72。
3)結果規格化時會檢查指數,看它是否比最小指數小或比最大指數大,以分別檢測指數下溢或上溢。指數下溢會導致結果為0,而指數上溢會造成錯誤,可能會要求作業系統介入處理。
捨入和截斷誤差
因為浮點運算可能引起尾數字數的增加,因此需要能夠保持尾數字數不變的方法。最簡單的技術叫作截斷(truncation)。例如,將0.1101101截斷為4位尾數的結果為0.1101。截斷會產生誘導誤差(induced error)(即誤差是由施加在數上的操作計算所引起的),誘導誤差是偏置的,因為截斷後的數總是比截斷前的小。
捨入(rounding)是一種更好的減少數的位數的技術。如果丟棄的位的值大於剩餘數最低位的一半,則將剩餘數的最低位加1。請考慮下面兩個數在小數點後第4位上捨入的例子。
0.1101011 → 0.1101 刪去的三位為011,什麼也不做
0.1101101 → 0.1101+1 = 0.1110 刪去的三位為101,因此加1
與截斷相比,人們更青睞捨入,因為它更加精確並會引起非偏置的誤差。截斷總會使結果變小,帶來系統性誤差,而捨入有時會使結果減小,有時會使結果增大。捨入的主要不足在於它需要對結果進行乙個額外的算術操作。
圖2-11描述捨入機制。最簡單的捨入機制是截斷或向0捨入。「向最近的數捨入」方法,會選擇距離該數最近的那個浮點數作為結果。「向正或負無窮大捨入」方法,會選擇正或負無窮大方向上最近的有效浮點數作為結果。當要捨入的數字於兩個連續浮點數的正中時,ieee捨入機制會選擇最低位為0的點(即向偶數捨入)。
具體實現時,浮點數使用3個專用位輔助完成捨入過程。乙個m位的尾數可表示為1.m1m2…mmgrs,這裡g為保護位(guard bit),用於暫時提高浮點數的精度;r為捨入位(rounding bit);用於輔助完成捨入,s為粘位(sticky bit)。粘位是r位右側的所有位進行邏輯與運算後的結果,之所以這樣稱呼是因為一旦該位被置位(表明右邊有乙個或多個位為1)它就將保持為1。捨入演算法根據以上3位確定捨入位的值。
計算機組成原理cu 計算機組成原理 計算機概論
現代計算機樣式千奇百怪,常見的有我們的筆記本,台式電腦,也有各種伺服器 手機 攝像頭等都屬於計算機範疇。計算機包含我們看得見摸得著的計算機實體,稱為計算機硬體,如cpu 記憶體 各種掛接裝置等 還有我們看不見摸不著的軟體,它支援著硬體按照我們的預想在操作,包括系統軟體和應用軟體 計算機硬體樣式千奇百...
計算機組成原理
1計算機系統概論 1.1 計算機簡介 計算機由 硬體 和 軟體 組成。硬體 是看得見摸得著的各種電子元器件,各類光,電,機裝置的實物組成,如主機,外設等等。軟體 是看不見摸不著,由人們事先編製成具有各類特殊功能的資訊組成。計算機的三層結構 高階語言 組合語言 機器語言 微指令系統。計算機組成與計算機...
計算機組成原理
1.加法器是如何計算不同型別變數的加法的 分析 加法器的功能就是計算而已,其有兩個輸入端,當兩個輸入端都有資料時,其就進行計算並將結果輸出。輸入到加法器的兩端的資料格式是統一的 可能都是有符號的補碼形式 這就是說,各種型別的變數相加,這些變數在進入加法器輸入端之前,程式都會根據其型別將其轉換為輸入端...