一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是有符号的,计算机用机器数的最高位存放符号,正数为0,负数为1.
比如,十进制中的数+3,计算机字长为8位,转换为二进制就是0000 0011。如果是-3,那么就是1000 0011。这里的0000 0011和1000 0011就是机器数。
因为第一位是符号位,所以机器数的形式值就不等于真正的数值。
例如上边的有符号数1000 0011,其最高位代表负,其真正数值为-3,而不是形式值131。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。
原码、反补码是机器存储一个具体数字的编码方式
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。例如8位二进制:1的原码就是0000 0001,-1的原码就是1000 0001。
因为第一位是符号位,所以八位二进制数的取值范围就是[11111111,01111111],即[-127,127]
正数的反码就是其原码,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
例如,1的反码就是0000 0001,而-1的反码是1111 1110。
正数的补码还是其原码,所以说,正数的原码、反码和补码是相同的。
负数的补码是在其原码的基础上,符号位不变,各位取反之后再加1(也就是反码加1)。
例如1的补码是0000 0001,而-1的补码是1111 1111
参考
https://zhuanlan.zhihu.com/p/91967268 继续深入了解可点击此链接
原文:https://www.cnblogs.com/veani2/p/14548028.html