位运算 Bitwise operations
由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。
常见位运算符:
编程常用的位运算操作
x & 1 == 1 or == 0 判断 x 的二进制最后是 1 还是 0,即判断奇偶性(x % 2 == 1)
x = x & (x - 1) 清零最低位的 1。例如 110101 & 110100 得到110100;110100 & 110011 得到11000
x & -x 得到最低位的1。 -x 是取反再加1
x & ~x 得到 0
更为复杂的位运算操作
1. 将 x 最右边的 n 位清零:x & (~0 << n)
2. 获取 x 第 n 位值:(x >> n) & 1
3. 获取 x 第 n 位的幂值:x & (1 << (n-1))
4. 仅将第 n 位置为 1:x | (1 << n)
5. 仅将第 n 位置为 0:x & (~(1 << n))
6. 将 x 最高位至第 n 位(含)清零:x & ((1 << n) - 1)
7. 将第 n 位至第 0 位(含)清零:x & (~((1 << (n + 1)) - 1))