原码、反码及补码

首先，计算机中所有的数据都是以二进制存储的（非 0 即 1），包括正负数的符号也只能用 0 或 1 来表示，所以二进制的最高位如果是 0 表示正数，如果是 1 则表示负数

使用原码计算

假设有数值 2 和 -2 如下所示：

+2 的原码为 0000_0010

-2 的原码为 1000_0010

假设要进行 2 + (-2) 计算

0000_0010 + 1000_0010 = 1000_0100 (十进制的 -4)

显然上面的计算结果不是想要的结果

使用反码计算

为了解决上面问题，引入 反码

反码：正数的反码和原码相同，负数的反码除符号位不变，其他位取反

+2 的反码 0000_0010

-2 的反码 1111_1101

再进行 2 + (-2) 计算

0000_0010 + 1111_1101 = 1111_1111
上面的计算结果 1111_1111 是反码，转成原码为 1000_0000 也就是十进制 -0

综上，可以看出使用 反码 出现了 +0 和 -0 的问题

使用补码计算

在反码的基础上引入 补码

补码：正数的补码等于 原码，负数的补码是在 反码 的基础上 加 1

+2 的补码 0000_0010

-2 的补码 1111_1110

再进行 2 + (-2) 计算

0000_0010 + 1111_1110 = 0000_0000
上述结果正是需要的结果，所以计算机中使用补码来进行计算