解题的思路是循环统计二进制数中最后一个1,每次统计完后,把这个1从原数字中去掉,直至统计完最后一个1,原数字变为0。
通过将原数字与原数字减1的差做逻辑与可以把二进制数中的最后一个替换为0。代码如下:
class Solution {
public:
int NumberOf1(int n) {
int count=0;
for(;n!=0;n&=n-1){
++count;
}
return count;
}
};