& 按位与 同1则1
5&3 = 1
0000 0101
& 0000 0011
--------------
0000 0001
| 按位或 有1则1
5|3=7
0000 0101
| 0000 0011
--------------
0000 0111
~ 按位取反 01互换
~5=-6
~ 0000 0101
---------------
1111 1010 [补码]
1111 1001 [反码]
1000 0110 [原码] -6
^ 按位异或 不同为1,相同为0
5^3 = 6
0000 0101
^ 0000 0011
--------------
0000 0110
^ 0000 0011
--------------
0000 0101
0^任何数字 = 任何数字
位运算的左移动 二进制整体往左移动,缺位补0
5<<1 = 10
0000 0101 << 1
0000 1010
位运算的右移动 二进制整体往右移动,缺位补符号位(正数补0,负数补1)
5>>1 = 2
0000 0101 >> 1
0000 0001
左移相当于*2
右移相当于/2
位运算的优先级很低,使用过程中需要打括号 ,按位取反~ 除外