挑战面试编程:原码、反码、补码
原码、反码、补码是关于整数在计算机中的三个概念。
在计算机中,对于整数是这样存储的,在所有的二进制位中用一位(最高位)当做符号位,约定0表示正数,1表示负数,其余的是数值位。需要指出正数的原码、反码、补码都是一样的。对于sizeof(int)为4的环境,
1 的二进制是 0000 0000 0000 0000 0000 0000 0000 0001 (原码)
-1的二进制是 1000 0000 0000 0000 0000 0000 0000 0001 (原码)
反码
反码则规定为相对于原码符号位不变,数值位取反
1111 1111 1111 1111 1111 1111 1111 1110 (-1的反码)
补码
补码则规定为相对于反码加一
1111