在搞清楚原码、反码、补码的关系之前,我们先来了解几个概念。
1.机器数
一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的。在计算机中用一个数的最高位表示符号,0用来表示正数,1用来表示负数。
比如十进制中的3,计算机字长为8位,转换成二进制就是 0000 0011
比如十进制中的-3,转换成二进制就是 1000 0011
那么 00000011 和 10000011就是机器数。
2.真值
因为机器数的第一位是符号位,所以机器数的形式值就不是真正的数值,比如上面的有符号数10000011,其最高位为1,代表为负数,其真正的值为-3,而不是形式值131(10000011转换成十进制等于131)。所以,为区别期间,将带符号位的机器数对应的真正数值叫做机器数的真值。
例如:
00000011的真值 = +000 0011 = +3
10000011的真值 = -000 0011 = -3
3.原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余为表示值,比如如果是8位二进制:
[+1]原 = 0000 0011
[-1]原 = 1000 0011
第一位是符号位,因为第一位是符号位,所以8位二进制数的取值范围就是:
[1111 1111, 0111 1111]
即
[-127,127]
原码就是人脑最容易理解和计算的表示方式
4.反码
反码的表示方法是:
整数的