計算機定點加減溢出檢測
溢出的概念
在定點整數機器中,數的表示範圍 |x|<(2n−1)|x|<(2^n-1)。在運算過程中如出現大於字長絕對值的現象,稱爲“溢出”。在定點機器中,正常情況下溢出是不允許的。
例:設定點整數字長8位,補碼錶示(最高位爲符號位),表示範圍爲-128~127,運算結果超出此範圍就發生溢出。
兩個負數相加的結果小於機器所能表示的最小負數,結果變爲負數,成爲負溢。
兩個正數相加,結果大於機器字長所能表示的最大正數,結果成爲變爲負數,稱爲正溢。
三種檢測方法
例題:
1.在定點運算器中,無論採用雙符號位還是單符號位,必須有( ),它一般用( )來實現。
A.譯碼電路,與非門 B.編碼電路,或非門
C.溢出判斷電路,異或門 D.移位電路,與或非門
1.【答案】C。解析:在定點運算器中一般用異或門來實現溢出判斷電路
2.下列說法中正確的是( )。
A.採用變形補碼進行加減運算可以避免溢出
B.只有定點數運算纔有可能溢出,浮點數運算不會產生溢出
C.只有帶符號數的運算纔有可能產生溢出
D.將兩個正數相加有可能產生溢出
2.【答案】D。解析:變形補碼可以判斷溢出,但是不能避免溢出。
浮點數階碼超過上限(最大數)也會溢出,同號數相加或異號數相減都會產生溢出。
3.在定點數運算中產生溢出的原因是( )。
A.運算過程中最高位產生了進位或借位
B.參加運算的操作數超過了機器的表示範圍
C.運算的結果的操作數超過了機器的表示範圍
D.寄存器的位數太少,不得不捨棄最低有效位
3.【答案】C。解析:在定點運算中當結果操作數超過了計算機表示範圍就會產生溢出。
4.下溢指的是( )。
A.運算結果的絕對值小於機器所能表示的最小絕對值
B.運算的結果小於機器所能表示的最小負數
C.運算的結果小於機器所能表示的最小正數
D.運算結果的最低有效位產生的錯誤
4.【答案】A。解析:浮點數下溢出現在計算結果很接近零,
使得計算結果的大小小於浮點數可以表示的最小數字。
浮點數下溢也可以視爲是浮點數指數在負值時的溢位。
例如,浮點數指數範圍爲-128至127,一個絕對值小於2的
浮點數就會造成下溢(假設-128的階碼用於表示負無窮)。
5.存儲單元是指( )。
A.存放一個二進制信息位的存儲元 B.存放一個機器字的所有存儲元集合
C.存放一個字節的所有存儲元集合 D.存放兩個字節的所有存儲元集合
5.【答案】B。解析:存儲單元一般應具有存儲數據和讀寫數據的功能,
一般以8位二進制作爲一個存儲單元,也就是一個字節。
【例3-1-10】 在補碼的加減法中,用兩位符號位判斷溢出,兩位符號位Ss1Ss2=10
時,表示 () 。
A. 結果爲正數,無溢出 B. 結果正溢出
C. 結果負溢出 D. 結果爲負數,無溢出
解:Ss1Ss2=10時表示結果負溢出。本題答案爲C。
【例3-1-11】 在補碼的加減法中,用兩位符號位判斷溢出,兩位符號位Ss1Ss2=01
時,表示 () 。
A. 結果爲正數,無溢出 B. 結果正溢出
C. 結果負溢出 D. 結果爲負數,無溢出
解:Ss1Ss2=01時表示結果正溢出。本題答案爲B。
【例3-1-12】 若採用雙符號位,則發生正溢出的特徵是:雙符號位爲 () 。
A. 00 B. 01 C. 10 D. 11
解:只有在進行補碼定點數的加/減運算時才採用雙符號位來判斷結果的符號位和是否溢出,爲01時表示正溢出。本題答案爲B。
【例3-1-13】 在補碼加法運算中, () 時表示數據溢出。
A. 雙符號位相同 B. 雙符號位不同
C. 兩正數相加 D. 兩負數相加
解:在補碼加法運算中,若採用兩位符號法來判斷溢出,則當兩個符號位不同時表示溢出。本題答案爲B。
【例3-1-14】 兩補碼相加,採用1位符號位,則當 () 時,表示結果溢出。
A. 符號位有進位
B. 符號位進位和次高位進位的異或結果爲0
C. 符號位爲1
D. 符號位進位和次高位進位的異或結果爲1
解:這是採用進位判斷法來判斷是否溢出,其規則是若***位有進位,且和次高位進位異或結果爲1,表示結果溢出,若異或結果爲0,表示結果無溢出。本題答案爲D。
【例3-1-15】 兩個不爲0的5位二進制的定點小數,經補碼加法運算後結果爲1.00000,若此結果不表示溢出,則下列推論中正確的是 () 。
A. 兩個都爲正定點小數,和爲1.00000
B. 兩個數符號相反,被加數比加數大1.00000
C. 兩個都爲負定點小數,和爲1.00000
D. 兩個數符號相反,被加數比加數小1.00000
解:和爲1.00000即最小的數,又沒有溢出,一定是兩個負定點小數相加的結果。本題答案爲C。
【例3-1-16】 如下C語言程序在一臺32位機器上運算:
int x=127,z;
short int y=-9;
z=x+y;
程序運行後,x、y和z的值分別是 () 。
A. x=0000007FH,y=FFF9H,z=00000076H
B. x=0000007FH,y=FFF9H,z=FFFF0076H
C. x=0000007FH,y=FFF7H,z=FFFF0076H
D. x=0000007FH,y=FFF7H,z=00000076H
解:int型字長爲32位,short型字長爲16位,在計算機中均用補碼錶示,第一位爲符號位,則[x]補=127=(1111111)2=0000007FH,y=-9=-(1001)2=-(1000 0000 0000 1001),[y]補=1111 1111 1111 0111=FFF7H。在執行x+y運算時需要將y轉換爲int型後再相加,即[y]補轉換爲FFFFFFF7H,所以,[z]補=0000007FH+FFFFFFF7H=00000076H。本題答案爲D。
當一個補碼從16位擴展爲32位時,是指擴展高位部分,符號位不變,正數用0擴充,負數用1擴充,相當於用符號位擴充。
補充習題:
一、選擇題:
1、在定點二進制運算器中,減法運算一般通過 () 來實現。
A 原碼運算的二進制減法器 B 補碼運算的二進制減法器
C 補碼運算的十進制減法器 D 補碼運算的二進制加法器
2、 在浮點數的加、減運算中,對階原則是 () 。
A 小階向大階看齊 B 大階向小階看齊 C 不需要對階
D A 或B 均可
3、 () 不屬於判斷溢出的方法。
A 採用一個符號位判斷溢出 B 採用雙符號位判斷溢出
C 採用最高數值位進位和符號位進位聯合爲判斷溢出
D 採用最低位的進位判斷溢出
4、 原碼加減交替法的過程可以概括爲 () 。
A 求和、左移、上商 B 上商、求和、左移
C 左移、求和、上商 D 上商、左移、求和
5、對於補碼加減法,以下說法中錯誤的是 () 。
A 補碼運算的操作數用補碼錶示 B 符號位參加運算
C 若機器指令爲減法,則兩數補碼直接相加 D 運算結果永補碼錶示
6、浮點數溢出的條件是 () 。
A 階碼最高位有進位 B 結果尾數溢出 C 階碼溢出
D 尾數規格化後階碼溢出
7、對於定點補碼的運算,敘述正確的是 () 。
A 兩正數相加,最高數值位無進位,有溢出
B 兩正數相加,最高數值位有進位,無溢出
C 兩負數相加,最高數值位有進位,無溢出
D 兩負數相加,最高數值位無進位,無溢出
8、 補碼加減交替法的運算過程包括 () 。
A 商的產生 B 餘數的確定 C 符號的確定 D 以上都包括
9、按補碼加減交替法,首先得到的是商的 () 。
A 符號位 B 最高數值位 C 0 D 1
10、按原碼加減交替法,首先得到的是商的 () 。
A 符號位 B 最高數值位 C 0 D 1
11、設X=+1011,Y=+1101,用補碼加減交替法求X/Y,則商Q爲 () 。
A 0.1111 B 0.1101 C 0.0011 D 0.1110
12、對於[X]補=0.1101和[Y]補=0.1011 進行補碼一位乘法,要進行 () 次右移 。
A 2 B 3 C 4 D 5
13、[-Y]補爲 () 。
A [Y]補 的各位取反然後末位加1 B [-Y]補 的各位取反然後末位加1
C [-Y]補 的各位取反 D [Y]補 首位加1
14、在原碼恢復餘數的除法中,若求得的商爲N位,,最後餘數應右移 () 位 。
A N B N+1 C N-1 D 2N
15、 進位鏈用於 () 。
A 同時形成進位 B 行波進位 C 符號擴展 D A或B或C
16、 計算機系統中採用補碼運算的目的是爲了 () 。
A 與手工運算方式保持一致 B 提高運算速度
C 簡化計算機的設計 D 提高運算精度
17、運算器有許多部件組成,但核心部分是 () 。
A 數據總線 B 算術邏輯運算單元 C 多路開關 D 通用寄存器
18、四片74181ALU和一片74182CLA 器件愛女相配合,具有 () 進位傳遞功能。
A 行波進位 B 組內先行進位,組間先行進位
C 組內先行進位,組間行波進位 D 組內行波進位,組間先行進位
19、在定點運算器中,無論採用雙符號位還是採用單符號位,必須有 (1) ,它一般採用 (2) 來實現 。
(1)A 譯碼電路 B 編碼電路 C 溢出判斷電路 D 移位電路
(2)A 與非門 B 或非門 C 異或門 D 與或非門
20、下列說法中正確的是 () 。
A 採用變形補碼進行加減法運算可以避免溢出
B 只有定點數運算纔有可能產生溢出
C 只有帶符號數的運算纔有可能產生溢出
D 只有兩個正數相加時纔有可能產生溢出
二、填空題:
1、 原碼除法規則是在 —— 假設條件下推導出來的。
2、 並行進位指的是各個進位位 —— 。
3、 補碼加減交替法中, 餘數與除數同號,則商上 —— ,餘數與除數異號,則商上 —— 。
4、採用單符號位判斷補碼運算溢出的方法是:當兩個同號數的補碼相加,若所得結果的符號位與兩數 —— 的符號位 —— ,則表明溢出。
5、Booth算法中,第n+1步運算與前面n步運算的不同點是 —— 。
6、進位生成函數的邏輯含義是:當兩個輸入都是 —— 時,則產生 —— 。
7、行波進位加法器的缺點是 —— 。
8、先進進位的基本原理是 —— 。
9、浮點數加減運算器主要組成有兩大運算部件: —— 和 ——,
前者可進行 —— 運算,後者可進行 —— 。
10、浮點數表示的數值範圍取決於 —— ,浮點數的精度取決於 ——。
11、數據溢出的根本原因是 —— 。
12、當浮點數的尾數爲補碼時,其爲規格化數應滿足的條件是 —— 。
13、浮點數0.00100011B的規格化表示是 —— 。
14、如果採用0舍1入法進行舍入處理,0.0011捨去最後一位後變成 —— 。
15、判斷溢出的3種方法是 —— 、 —— 和 —— 。
16、BCD碼加法運算時可能需要加6修正,其中相加之和在10-15之間,進位是在 過程中產生的 ,相加之和在16-18之間,進位是在 —— 過程中產生的 ,
17、 浮點數的加減法運算要經過 —— 、尾數運算、 —— 、—— 、檢查階碼是否溢出等幾個階段。
18、定點補碼加法運算中, —— 時表明數據發生了溢出。
19、在浮點數加減法運算中,當運算結果的尾數的絕對值大於1時,需要對結果進行 —— ,
其操作是—— 。
20、 補碼加減交替法運算過程中的每一步都是比較 —— 和 —— 的絕對值大小。
選擇題答案:
1、 D 7、 C 12、 C 13、 A 15、 A 17、 B 18、 B
19、C、 C
填空題答案:
4、 補碼 5、不移位
9、 階碼運算部件, 尾數運算部件 , 加減運算 , 加減運算和移位運算
11、 表示數據的位數有限 12、 尾數的符號位和最高數值位相異
13、 0. 10001100×2-2
15、符號比較法、雙進位法、雙符號位法