引言
1、计算机中所有的数据之间的运算都是采用补码进行的,要想知道一个数据的补码,就必须得先知道其反码,要想知道反码,就必须先知道其原码
2、上面所提到的原码,反码,补码其实都是二进制的形式
3、我们看到的结果都是原码转10进制之后的结果
原码
:最高位为符号位,其余位为数值位
正整数:符号位为0,其余位是该整数的二进制形式
负整数:符号位为1,其余位是该整数的二进制形式
举例: 符号位 数值位
-7的原码: 1 0000111
3的原码: 0 0000011
反码
:最高位为符号位,其余位为数值位
正整数:与原码一致
负整数:符号位不变,数值位按位取反
举例: 符号位 数值位
3的反码: 0 0000011
-7的反码: 1 1111000
补码
:最高位为符号位,其余位为数值位
正整数:与原码一致
负整数:反码的末位加1
举例: 符号位 数值位
3的补码: 0 0000011
-7的补码: 1 1111001
-7 + 3 = -4
0000011
+1111001
-----------
补码: 1111100
-7+3之后的补码:11111100
因为运算后的补码最高位是1,所以我们看到的结果应该是将这个补码转原码再转10进制之后的结果
已知补码求原码:
符号位 数值位
补码 1 1111100
反码 1 1111011
原码 1 0000100
----------------------------
将数值位转10进制:4,又因为符号位是1,所以是负数,所以最终的结果是-4