说来惭愧虽然刚接触计算机时已经学过原码、反码和补码的内容,但最近重温时却发现 “这是什么鬼东西”,看来当初只是应付了考试了而已。本篇将试图把他们说个明白,以防日后自己又忘记了。 在深入之前,我们先明确以下几点: 1. 本篇内容全部针对有符号数整数; 2. 对于有符号数整数,其在计算机中的存储结构是 符号位 + 真值域。其中符号位为 0 表示正数,1 表示负数; 3. Q:既然已经有原码,那么为什么还要出现反码、补码等数值的编码方式呢? A:由于为了降低当时计算机物理电路的设计难度,决定采用加法代替减法运算(因此计算机内部是没有减法运算的),即 10-5 被替换为 10+(-5),而反码、补码就用于解决 10+(-5) 的问题的。