計算機定點加減溢出檢測

計算機定點加減溢出檢測

溢出的概念

在定點整數機器中,數的表示範圍 |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、符號比較法、雙進位法、雙符號位法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章