1、循环32次的
int numofone(int a)
{
unsigned int flag = 1;
int count=0;
while(flag)
{
if(flag&a) count++;
flag = flag <<1;
}
return count;
}
2、效率提高得
int numofone(int a)
{
int count=0;
while(a)
{
count++;
a = a&(a-1);
}
return count;
}
相似问题:给定两个整数m和n,问改变m多少二进制为变成n
思路:m和n异或,然后求异或后1的个数
int numofone(int m,int n)
{
int a = m^n;
unsigned int flag = 1;
int count=0;
while(flag)
{
if(flag&a) count++;
flag = flag <<1;
}
return count;
}