位运算算法题小技巧

学了忘,忘了学

Posted by MatthewHan on 2021-02-25

位运算

位运算的效率就不说了,每次学会一些小技巧就忘了,还是基础不够扎实吧。。

  1. 计算某个 int 值的第 i 位(二进制位)是什么,可以用 num >> i; 有符号右移,不要在用 Integer 的 API 了
  2. 0 与 1 的转换(仅存在 1 与 0),num = 1 - num;
  3. 汉明码常用:for (int i = 0; i < 32; i++) {} 懂得都懂
  4. 汉明码常用:多个数计算汉明码距离,只要找到 1 的个数和 0 的个数相乘即可
  5. num1num2 不用缓存 tmp 的交换,num1 ^= num2; num2 ^= num1; num1 ^= num2; 但是要记住 num1num2 不能相等,不然会直接等于 0
  6. 判断奇偶这个老是记不住,(num & 1 == 0); 因为任何二进制位和 1 做 & 运算都是本身,偶数的末尾是 0
  7. x ^ y ^ x = yx ^ 0 = x这个经常多用用,前缀和、异或的题属于是考麻了!
  8. 后续再更…