计算机定点加减溢出检测

计算机定点加减溢出检测

溢出的概念

在定点整数机器中,数的表示范围 |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、符号比较法、双进位法、双符号位法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值