原码、反码、补码

301 阅读2分钟

原码

原码是最高位作为符号位,其余位表示数值的大小,符号位为 0 表示正数,1 表示负数。

  • 正数:+5 的 16 位原码为 0000 0000 0000 0101,符号位 0 表示正数。
  • 负数:-5 的 16 位原码为 1000 0000 0000 0101,符号位 1 表示负数。

原码缺点:加减法计算复杂,因为符号位要单独处理。

反码

反码是将负数的原码中,符号位保持不变,其他位取反。

  • 正数:+5 的反码和原码相同,都是 0000 0000 0000 0101
  • 负数:-5 的 16 位原码为 1000 0000 0000 0101,其反码为 1111 1111 1111 1010

反码优点:正负数的表示更加对称,但在计算时依然需要特殊处理。

补码

补码是计算机中实际使用的方式,负数的补码通过反码加一得到。

  • 正数:+5 的补码和原码相同,为 0000 0000 0000 0101
  • 负数:-5 的 16 位反码是 1111 1111 1111 1010,加 1 得 1111 1111 1111 1011

补码优点:计算时可以直接进行二进制加法,不需要对符号位做特殊处理。

总结

数字原码反码补码
+50000 0000 0000 01010000 0000 0000 01010000 0000 0000 0101
-51000 0000 0000 01011111 1111 1111 10101111 1111 1111 1011

用 16 位表示可以展示更大数值范围,同时保持同样的原理:正数不变,负数通过反码加一得到补码。