位运算
位运算的效率就不说了,每次学会一些小技巧就忘了,还是基础不够扎实吧。。
- 计算某个
int
值的第i
位(二进制位)是什么,可以用num >> i;
有符号右移,不要在用Integer
的 API 了 - 0 与 1 的转换(仅存在 1 与 0),
num = 1 - num;
- 汉明码常用:
for (int i = 0; i < 32; i++) {}
懂得都懂 - 汉明码常用:多个数计算汉明码距离,只要找到 1 的个数和 0 的个数相乘即可
num1
与num2
不用缓存 tmp 的交换,num1 ^= num2;
num2 ^= num1;
num1 ^= num2;
但是要记住num1
与num2
不能相等,不然会直接等于 0- 判断奇偶这个老是记不住,
(num & 1 == 0);
因为任何二进制位和 1 做&
运算都是本身,偶数的末尾是 0 x ^ y ^ x = y
,x ^ 0 = x
这个经常多用用,前缀和、异或的题属于是考麻了!- 后续再更…