1、二进制最高位是符号位(0代表正数,1代表负数)
2、正数的原码、反码、补码都相同
3、负数的反码是将原码符号位不变,其他位取反。
4、负数的补码是将反码+1
5、0的原码、补码都是0
6、计算机中是依据补码进行计算的。
7、练习:
1)、~2=?
例题说明:对2按位取反。由于2为正数,正数的原码、补码相等。所以只需要将补码按位取反。
补码:00000000 00000000 00000000 00000010
取反:11111111 11111111 11111111 11111101
由于取反后的结果为补码,所以还需要根据结果计算出结果的原码。
原码:10000000 00000000 00000000 00000011
故~2 = -3;
2)、2&3 = ?
例题说明:分别对2和3按位与,由于2和3 都是正数,正数的原码、补码相等,所以两个数与(两位全为1,结果为1)的结果是:
2:00000000 00000000 00000000 00000010
3:00000000 00000000 00000000 00000011
?:00000000 00000000 00000000 00000010
由于与后的结果为补码,所以还需要根据结果计算出结果的原码。根据符号位可以判断结果为正数,所以原码=补码。
故2&3 = 2
3)、-3^3 = ?
例题说明:将-3和3按位异或(两位不同结果为1,否则为0)。
-3的补码:11111111 11111111 11111111 11111101
3的补码: 00000000 00000000 00000000 00000011
?的补码:11111111 11111111 11111111 11111110
结果的原码为:10000000 00000000 00000000 00000010
故-3^3 = -2
4)、4|5 = ?
例题说明:将4和5按位或(有1则为1,全0为0)
4的补码:00000000 00000000 00000000 00000100
5的补码:00000000 00000000 00000000 00000101
?的补码:00000000 00000000 00000000 00000101
故4|5 = 5