1. 概述
计算机以二进制思考:开-关,是-否,真-假。但它是如何将电流转化为算术运算的呢?
本文将讲解计算机如何使用一种叫做 Two’s Complement(二进制补码) 的技术来执行二进制减法运算。
2. 二进制加法回顾
在深入补码之前,我们先回顾一下十进制和二进制加法的机制。
十进制是我们日常使用的数字系统。当我们对两个数字做加法时,如果某位超过 9,就会向高位进位。例如:
2 4 5
+ 5
-------
2 5 0
在二进制中,每一位的权重是 2 的幂次方。同样的加法逻辑也适用,只是进位发生在值超过 1 的时候:
1 1 1 1 0 1 0 1 (245)
+ 1 0 1 (5)
-----------------------
1 1 1 1 1 0 1 0 (250)
计算机通过专用电路来处理这些进位操作。
3. 二进制减法的问题
那减法呢?在二进制中,我们通过“借位”来完成减法操作。比如:
1 1 1 1 1 0 1 0 (250)
- 1 1 1 1 0 1 0 1 (245)
---------------------------
0 0 0 0 0 1 0 1 (5)
理论上,计算机也可以为减法单独设计电路。但这样会增加硬件复杂度。有没有更高效的方式?
答案是:我们可以将减法转化为 加法操作,即把减数取负后加到被减数上。而这个“取负”的过程,就是我们今天要讲的 Two’s Complement(补码)。
4. Two’s Complement 的原理
Two’s Complement 是一种将二进制数取负的方法,具体步骤如下:
- 按位取反(即将所有 0 变 1,1 变 0)
- 加 1
举个例子,我们想对 5(二进制 00000101
)取负:
✅ 步骤一:按位取反
00000101 → 11111010
✅ 步骤二:加 1
11111010 + 1 = 11111011
所以,-5 的补码表示就是 11111011
。
4.1 补码的实际应用
现在我们用它来做减法运算:
1 1 1 1 1 0 1 0 (250)
+ 1 1 1 1 1 0 1 1 + (-5)
----------------------------
1 1 1 1 0 1 0 1 (245)
⚠️ 注意:理论上结果应该是 9 位,但计算机的加法器只处理固定位数(如 8 位)。最高位的进位会被丢弃,这正是补码设计的巧妙之处。
4.2 补码的优势
- ✅ 用加法器就能实现减法
- ✅ 统一正负数的加减逻辑
- ✅ 硬件实现简单,节省电路资源
5. 总结
通过 Two’s Complement 技术,计算机可以用一套加法器电路完成加法和减法操作。这不仅简化了硬件设计,还提升了运算效率。
✅ 一句话总结:Two’s Complement 是计算机二进制运算的基础机制之一,它让减法变成了加法,从而实现了硬件层面的高效复用。