统计一个整数二进制格式中包含多少个“1”,以位运算来做比较容易。
例:
17的二进制数:
00010001
具体步骤为:每次都让二进制数与其减1做按位与运算。
当最后为0时结束。
int main()
{
int num = 17;
int count = 0;
while (num != 0)
{
count += 1;
num &= (num - 1);
}
printf("%d\n", count);
}
运行结果: