原码反码和补码
随便记一下,因为过于简单直接复制AI生成的
🟢 1. 原码(sign-magnitude)
规则:最高位是符号位,其余位表示数值的绝对值。
最高位 0 → 正数
最高位 1 → 负数
举例(8位):
+5:0000 0101
-5:1000 0101
👉 好处:直观,人类看一眼就懂。 👉 缺点:运算复杂,负数的加减法不好算。
🟡 2. 反码(ones’ complement)
规则:
正数:和原码一样。
负数:符号位不变,数值位逐位取反(0 ↔ 1)。
举例(8位):
+5:0000 0101
-5:1111 1010 (因为 0000 0101 逐位取反)
👉 好处:加减法比原码方便些。 👉 缺点:存在 “正零 0000 0000” 和 “负零 1111 1111” 两种零,很尴尬。
🔴 3. 补码(two’s complement)
规则:
正数:和原码一样。
负数:在反码的基础上 +1。
举例(8位):
+5:0000 0101
-5:1111 1011 (反码是 1111 1010,再 +1)
👉 好处:
只有一个零(0000 0000),不会重复。
加减法完全可以当“无符号数加法”来做,硬件实现最简单。 👉 所以现代计算机几乎都用补码。
✨ 三者对比总结
许可协议:
CC BY 4.0