背景:给一个数,求这个数以二进制形式中1的个数
//只能求正数二进制中1的个数
int _1numof1(int n)
{
int count = 0;
while (n)
{
if (n & 1)
count++;
n = n >> 1;
}
return count;
}
//可以求正数和负数二进制中1的个数,再32位机器下,需要循环32次。
int _2numof1(int n)
{
int count = 0;
int flag = 1;
while (flag)
{
if(n&flag)
count++;
flag = flag << 1;
}
return count;
}
//只需要循环该数二进制中1的个数次。
int _3numof1(int n)
{
int count = 0;
while (n)
{
count++;
n = (n - 1)&n;
}
return count;
}