原码:适用于教学和简单的计算,但实际计算中效率低下,因为加法和减法运算需要额外的逻辑来处理符号位。
反码:简化了负数的运算,但仍然存在零的重复表示和溢出问题。
补码:通过解决零的唯一表示和简化加法运算的逻辑,成为了标准。补码统一了加减法运算,简化了电路设计,提高了运算效率。
原码:用最高位表示符号(0为正,1为负),其余位表示数值的大小
反码:正数的反码和原码相等;负数的反码是符号位不变,其它位取反
补码:正数的补码和原码相等;负数的补码是反码加1
值 | 原码 | 反码 | 补码 |
---|---|---|---|
+0 | 0000 0000 | 0000 0000 | 0000 0000 |
-0 | 1000 0000 | 1111 1111 | 0000 0000 |
+1 | 0000 0001 | 0000 0001 | 0000 0001 |
-1 | 1000 0001 | 1111 1110 | 1111 1111 |
-2 | 1000 0010 | 1111 1101 | 1111 1110 |
+2 | 0000 0010 | 0000 0010 | 0000 0010 |
+1 + (-1) = 0000 0001 + 1111 1111 = 0000 0000
-2 + (+1) = 1111 1110 + 0000 0001 = 取反(1111 1111 (补码) - 1)= 取反(1111 1110) = 1000 0001 = -1