第一种方法:->效率不够高
int count_one_bits(unsigned int value)
{
int i = 0;
int count = 0;
for (i = 0; i < 32; i++)
{
if ((value>>i) & 1 == 1)
count++;
}
return count;
}
第二种方法:->效率较好
一个整数-1与这个整数做 &运算,相当于将这个整数的二进制序列的最后一个1变成0
int count_one_bits(unsigned int value)//第三种,效率最高
{
int count = 0;
while (value != 0)
{
count++;
value &= value - 1;
}
return count;
}