1.涉及到的知识其实就是逻辑运算符,每个数与(它的-1)进行&操作再赋值给该数,每执行一次,该数二进制最右边的1就会丢掉,只要知道一个数变成0之前进行了多少次操作就可知道二进制有几个1了。
2.思路:用循环进行判定,看m=m&(m-1)如果是则++;
3.代码如下
#include<stdio.h>
int main()
{
int i, j=0;
scanf("%d",&i);
while (i)
{
i = i & (i - 1);
j++;
}
printf("%d\n", j);
return 0;
}
4.结果如下
看到这里觉得有用,给博主点一个赞吧!!!!