Skip to content

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

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

题目

假设 8 位字长的计算机中,两个带符号整数 x 和 y 的补码表示分别为 x 补 = A3H,y 补 = 75H,则通过补码加减运算器得到的 x-y 的值及 OF 标志分别为( )。

错因

A

两个错叠加。其一,把结果当成十六进制 24H = 36 而不是十进制 46(或者干脆把 8 位结果当 BCD/十六进制看);其二,看到"减法没产生借位"就当作"未溢出",OF=0。本题的真实结果按二进制读是 0010 1110 = 46,不是 24;判溢出的也不是借位/进位本身,而是符号变化

B

结果数算错(同 A 选 24),但溢出判断对——两个负数相加得正,确实溢出 OF=1。错的根源还是把二进制结果按错误进制读出(0010 1110 看成"24"),把"OF=1 那一项"配错了数字。这是个组合干扰项,迷惑选 A 的人多走半步。

C

结果数算对了(46),但 OF 判错为 0。常见思路:看到加法运算 A3H + 8BH = 1 0010 1110 时,认为"反正最高位的进位舍弃了,没出错",把"舍弃的进位"误当作"没溢出"。补码溢出不能用进位本身判——必须用"两加数符号 vs 结果符号"或双符号位法。本题两负相加得正,已经溢出,OF 必须是 1。

总解析

思路:8 位补码减法走的是 的等价加法。

  1. (对 "取反加 1",即按位取反末位 +1)
  2. 做 8 位加法、舍去最高进位
  3. 把结果按 8 位补码读出十进制
  4. 判 OF:两加数同号、结果异号 → 溢出

第一步:求

对它"取反加 1"得到

步骤二进制十六进制
75H
各位取反8AH
+18BH

所以

第二步:补码加法

   1010 0011    (A3H, 负数, 符号位 1)
+  1000 1011    (8BH, 负数, 符号位 1)
-----------
 1 0010 1110    (9 位结果)

   舍弃最高进位

舍弃溢出进位后留下 8 位:

注意:结果的二进制 0010 1110 应直接读成十进制 46,而不是误读成"24H = 36"。

第三步:判 OF(两个不同的等价方法)

方法一(符号变化法,最常用):两个加数都是负(符号位 1 + 符号位 1),相加结果符号位变成正(0010 1110 → 0),符号反转 → 溢出

方法二(双符号位法):把每个数的符号位再复制一份得到 9 位双符号位补码:

双符号位补码
相加
舍最高进位后

双符号位 = 10(最高 0、次高 1,不一致)→ 溢出,OF = 1。

也可以从语义上验证:(A3H 是 ),,已经超出 8 位有符号范围 ,必然溢出。

第四步:拼答案

  • (按 8 位补码,丢掉了高位) = 46
  • OF = 1

最终答案是 D(46, 1)

补码加减溢出判定速查

方法判据适用
符号变化同号相加得异号 → 溢出一位符号位
双符号位双符号位 0110 → 溢出改造的运算器
进位异或最高位进位 ⊕ 次高位进位 = 1 → 溢出硬件实现
数值范围结果超出 → 溢出事后验证

编者注(生僻术语):OF(Overflow Flag)是 CPU 标志寄存器里的"溢出标志位",由有符号运算的"两加数同号、结果异号"或"双符号位不一致"自动置位,与无符号溢出的 CF(进位标志)不是一回事——本题陷阱就在 A3H + 8BH 的最高位进位被舍弃,CF=1 但这不直接等于 OF=1,要单独判。

最后更新:

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

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