原码
原码是数字的二进制表示方式,由符号位和绝对值(数值位)构成。原码的第一位代表符号位(0 代表正数,1 代表负数);第二位开始就是数字的绝对值。
反码
反码的表示方法区分正负数。
- 正数时。反码等于原码。
- 负数时。反码在原码的基础上,符号位不变,数值位取反。
反码是相互的,可以说原码与其反码之间的互为反码。负数的反码加上原码等于 1。
补码
补码的表示方式同样区分正负数。
- 正数时。补码等于原码。
- 负数时。补码在原码的基础上,符号位不变,数值位取反并在末尾+1(即在反码的基础上+1)。
负数的补码加上原码等于 0。
计算补码的注意点
在了解了补码的表示形式之后要注意一下计算补码的过程,进行 +1 操作时如果产生进位只影响数值位,不影响符号位,如果超出数值位的长度则舍弃。注意注意,只有在计算补码时是这样,补码运算(补码加补码)时符号位都是要参与运算的。为了说明进位情况,举一个例子:在限定了最大位数为 4 位的情况下求 1000 的反码,计算过程如下图。
参考资料
补码的加减法运算_简述补码减法运算的规则
反码和补码的数学原理
补码(为什么按位取反再加一):告诉你一个其实很简单的问题