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 是一种将二进制数取负的方法,具体步骤如下:

  1. 按位取反(即将所有 0 变 1,1 变 0)
  2. 加 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 是计算机二进制运算的基础机制之一,它让减法变成了加法,从而实现了硬件层面的高效复用。


原始标题:Two's Complement

« 上一篇: 稳定排序算法详解
» 下一篇: 代码覆盖率