参考资料:
剑指OFFER课本第3种解法
思路:
关键词:
n=n(n-1);
自己的答案:
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
while(n)
{
n=n&(n-1);
count++;
}
return count;
}
};
//统计二进制中1的个个数用n=n(n-1)
//8的二进制是1000
//7的二进制是0111
//与后是0
//
标准答案:联发科考题
class Solution {
public:
int NumberOf1(int n) {
int count = 0;
//将一个数减1之后,与原来的数按位与,就能把该数最右边的1变为0,一个数有多少个1,就能操作多少次
while(n)
{
n = (n-1)&n;
count++;
}
return count;
}
};