二进制中1的个数

二进制中1的个数

Content #

考察下面表达式的效果:

n & (n - 1)

以n=1100为例,n-1的结果为1011,相当于把最右边的1变成0,而该位右边的0全部变成1。于是上面的表达式的结果相当于将最右边的1转换成0。

int count = 0
while (n) {
  count++;
  n &= (n-1);
}
return count;

From #

https://leetcode-cn.com/problems/number-of-1-bits/