Skip to content

2018年 408 计算机组成原理 第 16 题

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

题目

整数 x 的机器数为 11011000,分别对 x 进行逻辑右移 1 位和算术右移 1 位操作,得到的机器数各是( )。

错因

A

把"逻辑右移"也按"算术右移"处理——高位补符号位 1。但逻辑右移高位永远补 0,与符号位无关。错的本质是没把"逻辑/算术"两种移位区分开。

C

顺序反了——把算术右移结果当成了逻辑右移结果,反之亦然。看到题面"分别对 x 进行逻辑右移算术右移"要按顺序对应输出。

D

把"算术右移"也按"逻辑右移"处理——高位补 0。但算术右移高位补符号位(本题符号位 = 1,补 1),目的是保持有符号数移位前后的真值近似除以 2。

总解析

两种右移规则

移位类型高位补什么适用于
逻辑右移(≫)永远补 0无符号数;当作纯位串处理
算术右移(≫)补符号位(最高位的当前值)有符号数;保持除以 2 的语义

第一步:逻辑右移 1 位

x = 1101 1000,所有位向右挪 1 位,最高位补 0

76543210
x 原11011000
逻辑右移01101100

结果 = 0110 1100

第二步:算术右移 1 位

x = 1101 1000,符号位 = 1,所有位向右挪 1 位,最高位补 1(符号位的值):

76543210
x 原11011000
算术右移11101100

结果 = 1110 1100

汇总:逻辑右移 = 0110 1100,算术右移 = 1110 1100

最终答案是 B

真值验证(用 8 位补码看意义):

x = 1101 1000 是负数(最高位 1)。:取反 0010 0111 + 1 = 0010 1000 = 0x28 = 40 → x = −40

操作结果机器数当作有符号数读是否 = x ÷ 2
算术右移 1 位1110 1100-20✓ −40 ÷ 2 = −20
逻辑右移 1 位0110 1100+108✗ 把负数当无符号数处理

算术右移保持了"除以 2"的真值语义;逻辑右移则把符号位当普通位移走,对负数会得到完全不同的真值。

易错点速查

移位高位何时用
算术左移低位补 0× 2(与逻辑左移结果相同)
逻辑左移低位补 0同上
算术右移高位补符号位÷ 2(保持有符号语义)
逻辑右移高位补 0无符号位串处理

记忆口诀:算术守符号,逻辑只补零

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题