2.4.1 · 建议 15 分钟

补码怎样把减法变成加法

逐位观察加法与进位,再用表示范围判断补码运算是否溢出。

可学习
教材定位:纪禄平等《计算机组成原理》第 6 版,2.4.1,第 54—59 页(书内印刷页码)。
学习顺序:先完成正负数编码与移位案例。
先读懂,再操作

从这个问题开始:最高位有进位,就一定算错了吗?

补码让符号位参与运算

在固定总位数内,把操作数连同符号位相加,超出总位数的进位丢弃。这是按模运算,最后还要判断数学结果是否超出范围。

减法转换为加法

计算一个数减去另一个数,可以将第二个补码的所有位取反,再加 1,转换为相反数的模表示。

进位与溢出不同

进位是某一位的加法向更高位送出 1;有符号溢出是结果超出了当前位数的可表示范围。需要分别看待。

两种溢出判别应得到同一结论

进入符号位的进位 C 与送出符号位的进位 Cf 不同时,OF=Cf XOR C=1。双符号位出现 01 或 10 也表示溢出;00 与 11 表示正常。

本页小词典 · 遇到生词可以回来看
进位
本位相加超过一位能容纳的数时,送往高位的信息。
溢出
数学结果超出规定表示范围。
固定字长
运算只保留规定数量的二进制位。
求补
按固定模把编码变成对应相反数的编码,可用全位取反加 1。
溢出标志 OF
进入和送出符号位的进位异或结果;1 表示有符号溢出。

动手观察:补码怎样把减法变成加法

动态图解 · 公式推演

修改参数后点击上方按钮生效;用“下一步”观察过程。

演示范围演示 4 或 8 位带符号整数补码,不模拟门电路。范围检查、结果编码、数学结果分开显示。

带着问题再试一次

  1. 用 4 位计算 5+3,比较数学结果与编码对应的真值。
  2. 改成 −1+1,观察最高位送出进位,但数学结果没有溢出。
  3. 分别计算 5+3 与 −1+1,比较最高位进位、进入符号位的进位和 OF。
做完再看解释

检查理解

用两道小题检查是否看懂本页的核心过程,答错可以重新尝试。

1. 4 位补码计算 5+3 得到 1000,能直接说结果是 −8 吗?
2. 补码减法把第二个操作数怎样处理?
本节知识清单与课堂延伸

原码加减需根据两个数的符号,决定绝对值相加或相减,再确定结果符号。补码避免对这些情况逐一分开处理。

同号数相加出现异号结果提示溢出;也可比较进入和送出符号位的进位。双符号位法中,00 和 11 为正常符号状态,01 和 10 提示正、负溢出。

移码运算还要修正偏置:若编码为真值加偏置,则相加的编码结果应减去一次偏置,相减的编码结果应加回一次偏置。

依据教材章节范围重新设计,图示、演示数据与练习均为本站制作。配合课本阅读;本站不提供教材电子版。