位运算符(位运算符都是以二进制补码形式进行运算)
&运算符:转成二进制补码按位与
例:
6&3
6二进制是110
3二进制是11
6: 110
3: 011
010 = 2
所以6&3=2;
|运算符:转成二进制补码按位或
例:
10|2
10二进制是1010
2二进制是10
10:1010
2: 0010
1010=10
所以10|2 = 10;
^(异或:两边相同结果flase,两边不同结果true)运算符:转成二进制补码按位异或
例:
6^3
6二进制是110
3二进制是11
6: 110
3: 011
101 = 5
所以6^3=5;
~(单目运算符)运算符:转成二进制补码按位取反
例:
~6
6二进制是110
0000000000000000 00000000 00000110 补码
1111111111111111 11111111 11111001 对6取反
- 00000000 00000000 0000000000000001
_______________________________________________
1111111111111111 11111111 11111000 反码
1000000000000000 00000000 00000111
-7
所以~6 = -7;
位移运算符
<<:左移 左边最高位丢弃
>>:右移 最高位是0, 左边补齐0;最高位是1,左边补齐1
>>>:无符号 无论是最高位是0还是1,左边补齐0