规则:如图
1、正数的原码、补码、反码都是自身;
2、负数的反码等于符号位不变,数值位取反;
3、负数的补码等于其反码+1;
4、通过原码计算补码的规则和通过补码计算原码的规则相同;
5、无论正数还是负数在计算机中都是以补码形式存储的,方便计算机进行计算,消除了减法,所以在对十进制的变量进行位运算的时候,需要先将其二进制的编码转化为其对应的补码,运算完成后再将的到的新的二进制转化为原码,再将原码转化为十进制数值进行展示。
实际上在计算机上面对十进制的变量进行位运算,底层操作的是我们这个十进制数对应的补码,例如:
1110 0011 -99的二进制值
1001 1100 -99的二进制值的反码
1001 1101 补码 = -99反码+1,因为无论正数还是负数在计算机中是以补码形式存储的,所以1001 1101这就是-99在计算中存储的二进制
-99的二进制左移一位得到0011 1010,因为0011 1010是正数,所以补码和原码相同,对应到十进制是58
-99的二进制右移一位得到1100 1110,因为1100 1110是负数,通过补码1100 1110计算得到原码1011 0010,对应到十进制是-50
1010 0011 -35的二进制值
1101 1100 -35的二进制值的反码
1101 1101 补码 = -35反码+1,因为无论正数还是负数在计算机中是以补码形式存储的,所以1101 1101 这就是-35在计算中存储的二进制
-35的二进制左移一位得到1011 1010,因为1011 1010是负数,通过1011 1010计算得到原码1100 0110,对应到十进制是-70
-35的二进制右移一位得到1110 1110,因为1110 1110是负数,通过1110 1110计算得到原码1001 0010,对应到十进制是-18