二进制分为原码、反码、补码
计算机实际是一律用补码进行位运算、运算、存储、表示的,
为什么负数用补码来表示?为了实现加减法运算法则的统一
运算过程:10进制->原码->反码->补码->进行运算->补码->反码->原码->10进制
可以进行的运算有如与运算(有0则0),或运算(有1则1),异或运算(相同为0,不同为1),左移,右移,无符号位右移
正数的原、反、补相同
负数的反码=原码符号位不变,其他位取反
负数的补码=原码符号位不变,其他位取反,然后+1=负数的反码+1
比如:int a =3
a原码:00000000 00000000 00000000 00000011
a反码:00000000 00000000 00000000 00000011
a补码:00000000 00000000 00000000 00000011
比如int b=-3
b原码:10000000 00000000 00000000 00000011
b反码:11111111 11111111 11111111 11111100
b补码:11111111 11111111 11111111 11111101