原码
原码是最高位作为符号位,其余位表示数值的大小,符号位为 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。
补码优点:计算时可以直接进行二进制加法,不需要对符号位做特殊处理。
总结
| 数字 | 原码 | 反码 | 补码 |
|---|---|---|---|
| +5 | 0000 0000 0000 0101 | 0000 0000 0000 0101 | 0000 0000 0000 0101 |
| -5 | 1000 0000 0000 0101 | 1111 1111 1111 1010 | 1111 1111 1111 1011 |
用 16 位表示可以展示更大数值范围,同时保持同样的原理:正数不变,负数通过反码加一得到补码。