位运算基础操作与练手题
n & (n - 1) 可以消去二进制表示中最右侧的 1,这个技巧在统计 1 的个数、计算汉明距离时很常用。下面三道题可以快速熟悉它:
class Solution {
public:
int hammingWeight(int n) {
int count = 0;
while (n) {
n &= (n - 1);
count++;
}
return count;
}
};
class Solution {
public:
vector<int> countBits(int n) {
vector<int> ans(n + 1, 0);
for (int i = 1; i < n + 1; i++) {
ans[i] = ans[i >> 1] + (i & 1);
}
return ans;
}
};
class {
:
{
val = x ^ y;
count = ;
(val) {
val &= (val - );
count++;
}
count;
}
};










