原理:
使用&操作跳过对0的遍历,15(1111),15&14(1110),14&13(1100)...
代码实现:
#include<stdio.h>
#include<Windows.h>
int main()
{
int input = 0;
int count = 0;
printf("请输入一个数:");
scanf("%d", &input);
while(input!=0)
{
input = input&(input-1);
count++;
}
printf("count = %d\n", count);
return 0;
}