概述
计算机定点加减溢出检测
溢出的概念
在定点整数机器中,数的表示范围 |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、符号比较法、双进位法、双符号位法
最后
以上就是沉默发箍为你收集整理的计算机定点加减溢出检测计算机定点加减溢出检测的全部内容,希望文章能够帮你解决计算机定点加减溢出检测计算机定点加减溢出检测所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复