0 1 0
0 1 1
-----
&:有0就是0 0 1 0
|:有1就是1 0 1 1
^:相同为0,相异为1 /无进位相加 0 0 1
n: 0 1 1 0 1 0 1 0 0 1
结论:(n >> x) & 1
0 1 1 0 1 0 1 0 0 1
| 0 0 0 0 0 1 0 0 0 0
-> 0 1 1 0 1 1 1 0 0 1
结论:n |= (1 << x)
0 1 1 0 1 0 1 0 0 1
& 1 1 1 1 0 1 1 1 1 1
-> 0 1 1 0 0 1 1 0 0 1
结论:n &= (~(1 << x))
本质:哈希表
0 1 1 0 1 0 1 0 0 0
~ 1 0 0 1 0 1 0 1 1 1
+1 1 0 0 1 0 1 1 0 0 0
& 0 1 1 0 1 0 1 0 0 0
0 0 0 0 0 0 1 0 0 0
结论:n & -n
-n:本质就是将最右侧的1,左边的区域全部变成相反
0 1 1 0 1 0 1 0 0
& 0 1 1 0 1 0 0 1 1
0 1 1 0 1 0 0 0 0
结论:n & (n - 1)
(n - 1):将最右侧的1,右边的区域(包括1)全部变成相反
能加括号就加括号,最不容易出错!
1.a ^ 0 = a
2. a ^ a = 0
3. a ^ b ^ c = a ^ (b ^ c)