- 判断奇偶:
-
奇:
(x & 1) == 1⟺(x & 1) != 0
-
偶:
(x & 1) == 0⟺(x & 1) != 1
- 乘(或除)以 2 的幂次:
-
x >> n⟺x / 2^n
-
x << n⟺x * 2^n
-
去除最后一位 1:
x & (x - 1)
-
得到最后一位 1:
x & -x
-
判断 2 的幂次:
x & (x - 1) == 0
-
交换两个数:
a ^= b; b ^= a; a ^= b;
-
交换符号:
~x + 1⟺-x
-
取绝对值:
(x ^ x >> size(x) - 1) - (x >> size(x) - 1)⟺x < 0 ? -x : x
-
构造 n 个 1:
(1 << n) - 1
-
将最左边的 n 位清零:
x & (~0 << n)
-
获取 x 的第 n 位值(0 或 1):
(x >> n) & 1
-
获取 x 的第 n 位的幂值:
x & (1 << n)
-
仅将第 n 位置为 1:
x | (1 << n)
-
仅将第 n 位置为 0:
x & (~(1 << n))
-
将 x 最高位至第 n 位(含)清零:
x & ((1 << n) - 1)
-
将第 n 位至第 0 位(含)清零:
x & (~((1 << (n + 1)) - 1))
-
取反第 n 位:
x ^ (1 << n)
-
异或满足交换律、结合律:
a ^ b ^ a = b ^ (a ^ a) = b ^ 0 = b