2009年真题
【2009年题12】 一个 C 语言程序在一台 32 位机器上运行。程序中定义了三个变量 x、y 和 z,其中 x 和 z 为 int 型,y 为 short 型。当 x = 127,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
C 语言中的整型数据为补码形式,int 为 32 位,short 为 16 位,故 x、y 转换成十六进制为 0000007FH、FFF7H。执行 z = x + y 时,由于 x 是 int 型,y 为 short 型,需将短字长数据转换成长字长数据,称之为符号扩展。由于 y 的符号位为 1,故在 y 的前面添加 16 个 1,即可将 y 上升为 int 型,其十六进制形式为 FFFFFFF7H。最后执行加法,即 0000007FH + FFFFFFF7H = 00000076H 其中最高位的进位 1 自然丢弃。故选 D。
2010年真题
【2010年题13】 假定有 4 个整数用 8 位补码分别表示 r1 = FEH,r2 = F2H,r3 = 90H,r4 = F8H,若将运算结果存放在一个 8 位寄存器中,则下列运算中会发生溢出的是______。
A. r1×r2 B. r2×r3 C. r1×r4 D. r2×r4
解析:
本题的真正意图是考查补码的表示范围,而不是补码的乘法运算。若采用补码乘法规则计算出 4 个选项,是费力不讨好的做法,而且极容易出错。
8 位补码所能表示的整数范围为 -128~+127。将 4 个数全部转换为十进制:r1 = -2, r2 = -14, r3 = -112,r4 = -8,得 r2×r3 = 1568,远超出了表示范围,发生溢出。
2013年真题
【2013年题14】 某字长为 8 位的计算机中,已知整型变量 x 和 y 的机器数分别为 [x]补=1 1110100,[y]补=1 0110000。若整型变量 z = 2x + y/2,则 z 的机器数为______。
A. 1 1000000 B. 0 0100100 C. 1 0101010 D. 溢出
解析:
x*2,将 x 算术左移一位为 1 1101000;y/2,将 y 算术右移一位为 1 1011000,均无溢出或丢失精度。补码相加为 1 1101000 + 1 1011000 = 1 1000000,亦无溢出。
2014年真题
【2014年题13】 若 x = 103, y = -25,则下列表达式采用 8 位定点补码运算实现时,会发生溢出的是______。
A. x + y B. -x + y C. x - y D. -x - y
解析:
8 位定点补码表示的数据范围为 -128~127,若运算结果超出这个范围则会溢出,A 选项 x + y = 103 - 25 = 78,符合范围,A 排除;B 选项 -x + y = -103 - 25 = -128,符合范围,B 排除;D 选项 -x - y = -103 + 25 = -78,符合范围,D 排除;C 选项 x - y = 103 + 25 = 128,超过了 127,选 C。
该题也可按照二进制写出两个数进行运算,观察运算的进位信息得到结果,不过这种方法更为麻烦和耗时,在实际考试中并不推荐。
2015年真题
【2015年题14】 下列有关浮点数加减运算的叙述中,正确的是______。
I. 对阶操作不会引起阶码上溢或下溢
II. 右规和尾数舍入都可能引起阶码上溢
III. 左规时可能引起阶码下溢
IV. 尾数溢出时,结果不一定溢出
A. 仅 II、III B. 仅 I、II、IV C. 仅 I、III、IV D. I、II、III、IV
解析:
对阶是较小的阶码对齐至较大的阶码,I 正确。右规和尾数舍入过程,阶码加 1 而可能上溢,II 正确,同理 III 也正确。尾数溢出时可能仅产生误差,结果不一定溢出,IV 正确。
2018年
【2018年题13】 假定带符号整数采用补码表示,若 int 型变量 x 和 y 的机器数分别是 FFFF FFDFH 和 0000 0041H,则 x、y 的值以及 x - y 的机器数分别是______。
A. x = -65, y = 41, x - y 的机器数溢出
B. x = -33, y = 65, x - y 的机器数为 FFFF FF9DH
C. x = -33, y = 65, x - y 的机器数为 FFFF FF9EH
D. x = -65, y = 41, x - y 的机器数为 FFFF FF96H
解析:
