解法①:将数据循环右移32位依次按位与1 如果真值为1 count++
int count_one_bit(num)
{
int count = 0;
for (int i = 0; i < 32; i++)
{
if (((num>> i) & 1) == 1)
count++;
}
return count;
}
解法②:将num与num-1按位与,按位与成功num二进制就会减少一个1,直到num为0
![](https://img-blog.csdnimg.cn/img_convert/c204a9d04fb9f4e7fafac1e42e02019a.png)
int count_one_bit(num)
{
int count = 0;
while (num)
{
num = num & (num - 1);
count++;
}
return count;
}