二进制
原码、反码和补码
机器数
与普通二进制数不同,最高位作为符号位,1表示负数,0表示正数,其余位数表示真值。
原码
原码就是用第一位表示符号,其余位表示值。比如如果是8位二进制:

反码
反码的表示方法是:
正数的反码是其本身;
负数的反码是在其原码的基础上,符号位不变,其余各位取反。

补码
补码的表示方法是:
正数的反码是其本身;
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)

既然原码才是被人脑直接识别并用于计算表示方式,为何还会有反码和补码呢?
1.电脑计算减法是转换成加法进行计算,且符号位参与到计算中。但是:

2.所以为了解决减法转换加法错误的问题,反码出现了。但是:

3.为了解决-0的问题,出现了补码。并把-0的编码作为数字范围内的最小值,所以数字范围增加了一个。
8位机器数能表示的数据范围:-128~127
32位机器数能表示的数据范围:-2147483648~2147483647
浙公网安备 33010602011771号