思路一:让1不断左移去位与n
int NumberOf1(int n) {
if(n==0)
return 0;
int count = 0;
int flag = 1;
while(flag!=0)
{
if((n&flag)!=0)
count++;
flag=flag<<1;
}
return count;
}
思路二:一个数减去1位与原数能使原数最后一个1去掉,例如10111,减一后为11000,10111&11000=10000,基于此,有多少个1就循环几次。
int NumberOf1(int n) {
int count = 0;
while(n)
{
count++;
n=(n-1)&n;
}
return count;
}