1.原码(8位二进制)
+1的原码:0000 0001 第一位是符号位
-1的原码:1000 0001
2.反码
正数的反码就是原码,负数的反码是符号位不动,其他位按位取反。
+1的反码:0000 0001
-1的反码:1111 1110
3.补码
正数的补码就是其本身,负数的补码就是原码的基础上,符号位不变,其余各位取反 (负数补码是其反码加一)
+1的补码:0000 0001
-1的补码:1111 1111
注意:无论正数还是负数,在内存中都是以补码的形式存储的。
4.按位与&
如果两个数二进制位进行&运算,同1则为1,有0都为0。
例子: 9&4 = 0
0000 1001
&0000 0100
----------------------------------
0000 0000
5.按位或|
如果两个数的二进制位进行|运算,有1则为1,同0则为0.
例子:9|4 = 13
0000 1001
|0000 0100
------------------------------------
0000 1101
6.按位取反~
如果两个数的二进制位进行~运算,1变为0,0变为1
例子 ~9 = -10
0000 1001
~
-----------------------------------
1111 0110
7.按位异或^
如果两个数的二进制位进行^运算,相同为0,不同为1.
例子 9^4 = 13
0000 1001
^0000 0100
---------------------------------
0000 1101
8.左移<<
m<<n,各二进制位左移n位,高位丢弃,低位补0,相当于m*2^n。
2<<2 = 8 8<<2 = 32
注意:左移可能会改变一个数的正负性
9.右移>>
m>>n,各二进制位右移n位,低位舍弃,高位需要补符号位。相当于m除以2^n.
8>>2 =2
注意:右移位不会改变一个数的正负性