位运算技巧
b >>= 1 // 等价于b/=2
if( b & 1 ) // 等价于if(b%2)
b=1<<n; // b为2的n次方
1.取出整数n在二进制表示下的第k位 (n>>k)&1
2.取出整数n在二进制表示下的第0~k-1位(注意表示是0到k-1位,一共k位) n&((1<<k)-1)
3.把取出整数n在二进制表示下的第k位取反 n xor(^) (1<<k)
4.对整数n在二进制表示下的第k位赋值1 n | (1<<k)
5.对整数n在二进制表示下的第k位赋值0 n & (~(1<<K))
参考链接
https://blog.csdn.net/sdz20172133/article/details/79935837