Skip to content

2026年 408 计算机组成原理 第 13 题

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

题目

对机器数 1010 0110B 先执行算术右移 3 位,再执行算术左移 2 位,最终结果是( )。

错因

B

把"先右移 3 后左移 2"误当成"净位移 = 右移 1",直接对原数 1010 0110B 算术右移 1 位得到 1101 0011B。这种"加减抵消"的思路对逻辑右移循环移位才成立——算术左移会把右移时补的符号位再"挤回去",从而丢失低位信息。本题先右移 3 位时把原数的低 3 位 110 永久挤出去了,再左移 2 位补的是 0,不可能再恢复成 011。

C

算术右移当成了逻辑右移——算术右移要按符号位补(这里符号位是 1,所以高位补 1),而不是补 0。1010 0110B 算术右移 3 位应是 1111 0100B(高位补 3 个 1),错答把它算成 0001 0100B(高位补 0),再左移 2 位得到 0101 0000B。算术 vs 逻辑的关键区别就在"补符号位还是补 0"。

D

用了循环移位代替算术移位——把先右移 3 位再左移 2 位看成"净循环右移 1 位",把 1010 0110B 的最低位 0 转到最高位得到 0101 0011B。算术移位不会循环,挤出去的位直接丢弃;而且左移补的也是 0,不是循环回来的位。

总解析

前置概念——算术移位的补位规则:

移位方向高位补什么低位补什么挤出位
算术右移复制符号位(保持正负不变)直接丢弃
算术左移0直接丢弃

原数 1010 0110B,符号位为 1(表示负数)。

第一步:算术右移 3 位

每次右移高位补 1(符号位),低位 1 位被挤掉:

操作结果
初始1010 0110
右移 1 位1101 0011
右移 2 位1110 1001
右移 3 位1111 0100

得到 1111 0100B

第二步:算术左移 2 位

每次左移低位补 0,高位 1 位被挤掉:

操作结果
初始1111 0100
左移 1 位1110 1000
左移 2 位1101 0000

得到 1101 0000B

验证(可选,按真值检查)

原数 1010 0110B 是补码 → 真值 。 算术右移 3 位 ≈ 真值 ÷ 8 = ,向负无穷取整为 −12,对应补码 1111 0100B ✓。 算术左移 2 位 = 真值 × 4 = ,对应补码 1101 0000B ✓(注意若结果超出补码可表示范围会溢出,本题未溢出)。

最终答案是 A(1101 0000B)

易错点速查

  • 算术右移 ≠ 逻辑右移:前者高位补符号位,后者高位补 0
  • 算术左右移不可逆:被挤出去的位丢失,先右后左 ≠ 净位移右 1
  • 算术左移可能改变符号位(导致溢出),右移不会

最后更新:

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

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