位运算符
- 异或
 按位异或可以实现无进位相加,所谓无进位相加,就是在不考虑进位的情况下将两个数相加(后面有道题需要用到这种操作)
  
异或的运算律
 ①a ^ 0 = a
 ②a ^ a = 0
 ③a ^ b ^ c = a ^ ( b ^ c )
- 有符号右移>>
 将一个数的所有位向右移动指定的位数,最高位用符号位填充
- 无符号右移>>>
 也是右移,不过最高位用0填充
基操
背景:给一个数 n,我们设它二进制表示的最低位的下标是 0
-  确定 n 二进制表示的第 x 位是0还是1 
 将 n 右移 x 位,然后和 1 按位与,若为 0,则第 x 位为0;反之为 1
-  将 n 的第 x 位修改成 1 
 将 1 左移 x 位,然后和 n 按位或
-  将 n 的第 x 位修改成 0 
 将 1 左移 x 位,然后和 n 按位异或
lowbit:提取一个数二进制中最右侧的1
这是一个很巧妙的操作,本质是将最右侧的 1 左边的区域全变成相反
 操作:n ^ (-n)
去除最右侧的1
操作:n & ( n - 1 )
 本质:将最右侧的1右侧的区域(包括1)全部变成相反