Skip to main content
计算机科学计算器指南

二进制减法计算器:借位法、补码法与完整例题详解

·9 min read·Solvify Team

二进制减法计算器用来求两个二进制(基数为 2)数的差,但要想手算得到相同的答案,就必须掌握两种方法:一种是直接借位法,它和你在纸上做十进制减法的过程完全对应;另一种是二进制补码减法,这才是计算机硬件真正采用的做法。本文用完整例题把两种方法都走一遍——其中包括一次跨越多个 0 的连续借位——每个答案都附带十进制验算,并总结最容易毁掉一道二进制减法的常见错误。

什么是二进制减法?二进制减法计算器到底算了什么?

二进制减法求的是两个用基数 2 书写的数之间的差,只用到 0 和 1 两个数字。二进制减法计算器套用的,正是你早已熟悉的十进制“借位再相减”逻辑,只不过数位法则更少:0 − 0 = 0,1 − 0 = 1,1 − 1 = 0,而 0 − 1 = 1,同时要向左边相邻一位借 1。 最后这条法则正是二进制借位减法棘手的地方:在基数 2 里借位往当前位带来的值是 2(而不是十进制里的 10),而且一次借位可能要连续穿过好几个为 0 的数位,才能找到一个可以借出的 1。下面每道例题都会把这条借位链逐位走完。

二进制减法法则:0−0=0,1−0=1,1−1=0,而 0−1=1 并向左边相邻一位借 1。

如何用直接借位法做二进制减法?

下面是一道完整的直接借位例题:用 10110₂ 减去 01101₂,从右往左逐位计算,就和在纸上做十进制减法一样。

1. 第 1 步 —— 对齐数位

1 0 1 1 0 − 0 1 1 0 1 开始相减前,先把两个数按最右边(最低)的一位对齐。

2. 第 2 步 —— 第 1 位(最右):0 − 1

0 − 1 需要借位。向左边相邻一位借 1,本位变成 2 − 1 = 1。写下 1,并标记左边那一位欠着一次借位。

3. 第 3 步 —— 第 2 位:1 − 0,再减去借位

这一位原本是 1 − 0,但它欠着第 2 步借出的 1,于是变成 (1 − 1) − 0 = 0。写下 0。

4. 第 4 步 —— 第 3 位:1 − 1

1 − 1 = 0,而且这一位没有欠任何借位。写下 0。

5. 第 5 步 —— 第 4 位:0 − 1

0 − 1 又需要借位。向最左边一位借 1,本位变成 2 − 1 = 1。写下 1,并标记最左边那一位欠着一次借位。

6. 第 6 步 —— 第 5 位(最左):1 − 0,再减去借位

这一位是 1 − 0,但它欠着第 5 步借出的 1,于是变成 (1 − 1) − 0 = 0。写下 0。

7. 第 7 步 —— 读出结果并用十进制验算

把第 6 步到第 2 步写下的数字依次读出:01001₂。用十进制检验:10110₂ = 16+4+2 = 22,01101₂ = 8+4+1 = 13。22 − 13 = 9,而 01001₂ = 8+1 = 9 —— 二进制和十进制结果一致。

10110₂ − 01101₂ = 01001₂(十进制为 22 − 13 = 9)—— 两次借位,并经十进制交叉验算确认。

在二进制减法中,借位如何连续穿过多个 0?

对二进制减法计算器来说,最难讲清楚的情况就是连续借位:一次借位请求要穿过好几个为 0 的数位,才能碰到一个 1。下面就是这种典型场景:用 10000₂ 减去 00001₂。

1. 第 1 步 —— 对齐数位

1 0 0 0 0 − 0 0 0 0 1 只有被减数最右边一位需要借位,可是附近根本没有能直接借出的 1。

2. 第 2 步 —— 第 1 位(最右):0 − 1 触发连续借位

0 − 1 需要借位,但第 2 位也是 0,于是借位请求传给第 3 位。第 3 位同样是 0,再传给第 4 位。第 4 位还是 0,请求最终传到第 5 位,那里有一个 1。

3. 第 3 步 —— 借位在第 5 位得到满足并逐位回传

第 5 位的 1 借出后变成 0。这次借位让第 4 位从 0 变成 2,但第 4 位同时还欠着第 3 位的借位,于是它借出 1、自己留下 1(2 − 1 = 1),所以第 4 位 = 1。同样的“借出一半、留下一半”模式在第 3 位(变成 1)和第 2 位(变成 1)重复,直到最初那次借位终于落到第 1 位。

4. 第 4 步 —— 第 1 位借到位后完成计算

第 1 位用这次从第 5 位一路传下来的借位,得到 2 − 1 = 1。写下 1。

5. 第 5 步 —— 读出结果并用十进制验算

从第 5 位读到第 1 位:01111₂。用十进制检验:10000₂ = 16,00001₂ = 1。16 − 1 = 15,而 01111₂ = 8+4+2+1 = 15 —— 结果一致。注意这里有个速算规律:用 2 的幂减 1,总会把后面所有的 0 全部翻成 1,而这正是连续借位产生的结果。

10000₂ − 00001₂ = 01111₂(十进制为 16 − 1 = 15)—— 一次借位连续穿过四个 0 才得到满足。

二进制补码减法是怎么运作的?计算机为什么要用它?

手算时直接借位没什么问题,但计算机硬件并不会单独做一套减法电路——它用二进制补码把减法转换成加法,这样同一个二进制加法器就能同时处理两种运算。要计算 A 减 B,硬件实际算的是 A +(B 的二进制补码),然后把超出所用位数的溢出位丢掉。

1. 第 1 步 —— 求出被减数(减去的那个数)的二进制补码

先取减数的反码(每一位取反),再加 1。这样得到的就是该数在二进制中的相反数。

2. 第 2 步 —— 把减法改成加法

按普通的二进制加法法则,把被减数与第 1 步得到的补码相加。

3. 第 3 步 —— 若结果符合所选位宽,丢掉溢出位

如果相加后多出了一位、超过固定位宽(例如用 5 位数运算却出现了第 6 位),就把它丢掉——这个溢出位代表被吸收掉的借位,剩下的各位就是正确答案。

二进制补码减法:把减数每一位取反,加 1,再与被减数相加,最后丢掉溢出位。

怎样解一道二进制补码减法例题并验证结果?

复用前面那道题——10110₂ − 01101₂,按 5 位数处理——来确认二进制补码减法得到的答案与直接借位法完全一致。

1. 第 1 步 —— 求 01101 的反码

把 01101₂ 每一位取反:0→1,1→0,1→0,0→1,1→0,得到 10010₂。

2. 第 2 步 —— 加 1 得到二进制补码

10010₂ + 1 = 10011₂。这就是 01101₂ 在 5 位下的二进制补码(相反数)表示。

3. 第 3 步 —— 把被减数与补码相加

10110₂ + 10011₂:逐位相加并处理进位,得到 101001₂,因为两个 5 位数相加,结果是 6 位。

4. 第 4 步 —— 丢掉溢出位

从 101001₂ 中去掉最左边(第 6 位)那一位,剩下 01001₂ 就是 5 位的答案。

5. 第 5 步 —— 对照结果并用十进制验算

01001₂ 与前面直接借位法得到的结果完全相同。用十进制看,22 − 13 = 9,而 01001₂ = 8+1 = 9 —— 两种方法结论一致,说明二进制补码流程用对了。

用二进制补码算 10110₂ − 01101₂:10110 + 10011 = 101001 → 丢掉溢出位 → 01001₂ = 9,与直接借位法一致。

做二进制减法时应该避免哪些错误?

无论是手算还是用计算器核对,绝大多数错误的二进制减法结果都来自少数几类错误。

1. 错误 1 —— 把二进制借位当成十进制借位

在基数 2 里,借位给当前位加上的是 2,而不是 10。忘了这一点、沿用十进制借位逻辑,即使借位方向没错,写出来的数字也是错的。

2. 错误 2 —— 跨多个 0 的连续借位跟丢了

当一次借位要穿过好几个为 0 的数位时(比如 10000₂ − 00001₂),很容易搞不清哪些位还欠着借位。要一位一位地算,并把每个被借出的数位明确标记出来。

3. 错误 3 —— 求补码时取反后忘了加 1

二进制补码要求先把每一位取反(得到反码),然后再加 1。漏掉这个 +1,留下的就只是反码,算出的结果会比正确答案差 1。

4. 错误 4 —— 定位宽补码减法里保留了溢出位

当两个 n 位数相加得到 (n+1) 位的和时,最左边多出的那一位必须丢掉,才能得到正确的 n 位答案——保留它会让结果完全变样。

5. 错误 5 —— 省掉十进制验算

把两个操作数和最终答案都转成十进制只要几秒钟,却几乎能立刻抓出所有减法失误,因为二进制里错一位,换算成十进制通常会明显偏离正确数值。

二进制借位给当前位加的是 2,不是 10 —— 这是二进制减法出错最常见的原因。

练习题:这几道二进制减法你能做对吗?

先用直接借位法或二进制补码减法手算每一题,再对照答案。

1. 第 1 题 —— 直接借位,单次借位

用 1000₂ 减去 0011₂。答案:1000₂ − 0011₂ = 0101₂。十进制检验:8 − 3 = 5,而 0101₂ = 4+1 = 5。

2. 第 2 题 —— 二进制补码减法

用二进制补码计算 1010₂ 减去 0110₂。答案:0110₂ 的反码是 1001₂,加 1 得到 1010₂。相加:1010₂ + 1010₂ = 10100₂;丢掉溢出位得到 0100₂。十进制检验:10 − 6 = 4,而 0100₂ = 4。

3. 第 3 题 —— 跨三个 0 的连续借位

用 100000₂ 减去 000001₂。答案:100000₂ − 000001₂ = 011111₂,因为借位连续穿过了四个为 0 的数位。十进制检验:32 − 1 = 31,而 011111₂ = 16+8+4+2+1 = 31。

这些题目归根结底都只有两招:要么逐位追踪每一次借位,要么转成二进制补码再相加——然后一定要用十进制验算确认。

二进制减法在真实计算机中用在哪里?

二进制减法不只是一道计算机科学练习题——从 CPU 运算到底层编程的 bug,背后都是这个运算。处理器在算术逻辑单元(ALU)内部使用二进制补码减法,让同一个加法器电路既能做加法又能做减法,而不必为两者分别配一套硬件。像 C 这类底层语言中的内存地址计算、循环计数器和指针运算,在硬件层面全都归结为二进制减法。理解连续借位的模式,还能解释一类经典 bug 的来源:无符号整数下溢——减到 0 以下时数值不会变成负数,而是回绕成一个非常大的数,因为硬件已经没有可供继续借出的位了。

CPU 里的每一次减法——从循环计数器自减到内存地址计算——本质上都是二进制补码加法。

Solvify 如何帮你验证二进制减法计算器的结果?

读完本文、掌握直接借位法和二进制补码减法之后,你可以把二进制运算题——无论来自计算机科学作业、离散数学练习还是数字逻辑考试复习——拍照交给 Solvify 的 AI 解题工具,它会按同样的逐位相减和求补码步骤讲解一遍,方便你把它的过程和自己手算的结果对照,在交上评分作业之前就发现借位或取反的失误。

想真正建立对二进制减法的信心,最快的办法是先手算一道题,再用计算器去验证它——而不是反过来。
标签:
计算机科学计算器指南

立即获取作业帮助

与数百万学生一起使用我们的 AI 数学解题系统。获取数学题目的即时解答、逐步讲解和全天候作业辅导。

支持 iOS 和安卓设备