位运算那些没用的小技巧
-
消去最后一位的1
x & (x - 1)
-
交换两个数
a ^= b; b ^= a; a ^= b;
-
检查一个数的奇偶
x & 1
-
求x的绝对值
~(x >> 31) ? a : ~a + 1
-
取两个数的最大值
x ^ ((x ^ y) & -(x < y))
-
取两个数的最小值
y ^ ((x ^ y) & -(x < y))
-
从低位到高位,求n的第m位
(n >> (m-1)) & 1
-
从低位到高位,将n的第m位置0
n & ~(1 << (m-1))