统计二进制中1的个数
输入
10
-1
输出
2
32
#include<stdio.h>
int main()
{
int n = 0;
int m = 0;
scanf("%d", &n);
while (n)
{
n = n & (n - 1);
m++;
}
printf("%d", m);
return 0;
}
这个代码看起来很简单其实这个代码很妙下面为大家展示图解
每一次都对两个数按位与只留下两个数相同的数字而最后以为数都会因为减一而变化最后导致n变成0而进行了几步就是这个数中1的个数。