Skip to content

2013年 408 计算机组成原理 第 14 题

计算机组成原理2013年选择题2分

题目

某字长为 8 位的计算机中,已知整型变量 x、y 的机器数分别为 = 11110100, = 10110000。若整型变量 z = 2x + y/2,则 z 的机器数为( )。

错因

B

把符号丢了——可能是按"无符号数"或"原码"处理位串:把 误读成 +244、 误读成 +176,再做"乘 2/除 2"得到两个正数相加。结果落到正数区间,但题目里 x、y 都是负数(最高位是 1),加倍 / 减半后仍应是负数。关键判别:补码运算后最高位应保持负号才合理(两个负数相加结果还是负数)。

C

算术移位的方向 / 补位错了。 = 10110000 做算术右移时符号位(最高位)必须保留为 1,正确结果 11011000。如果做成"逻辑右移"(高位补 0)会得到 01011000;如果在 2x 的左移里没有处理好低位补 0、或在加法时进位算错,最终凑出 10101010 这种"看着像负数但具体值不对"的位串。建议用列竖式严格按位加。

D

误判 2x 溢出。判定 2x(算术左移 1 位)是否溢出的标准是:移位前最高两位是否相同—— = 11110100,最高两位都是 1(相同),所以左移不溢出。同理 y/2 是右移,永远不会溢出。再者 2x = −24 与 y/2 = −40 相加 = −64 ∈ [−128, 127],加法也未溢出。整道题没有任何溢出环节。

总解析

第一步:还原 x、y 的真值

机器数二进制真值
11110100
10110000

可以校验:,三者都在 8 位补码范围 内,不会溢出

第二步:算 2x(算术左移 1 位)

= 11110100 → 左移 1 位、低位补 0:

校验:11101000 的真值 =

溢出判定:左移前最高两位是 "11"(相同)→ 不溢出。

第三步:算 y/2(算术右移 1 位)

= 10110000 → 右移 1 位、高位补符号位 1

校验:11011000 的真值 = ✓(与 −80/2 = −40 吻合)

第四步:补码加法

  1 1 1 0 1 0 0 0      ([2x]补 = -24)
+ 1 1 0 1 1 0 0 0      ([y/2]补 = -40)
─────────────────
1 1 1 0 0 0 0 0 0      (第 9 位的进位舍弃)

按位加(从低到高,标 ↑ 为进位):

76543210
11101000
11011000
进位入11110000
11000000

去掉超出 8 位的最高进位 →

溢出判定:两个加数最高位都是 1(同号)、和的最高位也是 1(同号)→ 不溢出

校验:11000000 的真值 =

最终答案是 A(11000000)

算术移位三条铁律

  1. 算术左移:低位补 0;溢出条件 = 移位前最高两位不同
  2. 算术右移:高位补 符号位(正补 0、负补 1);不会溢出
  3. 加减法溢出判定:两加数同号、和异号 → 溢出

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数