求一个整数存储在内存中的二进制中1的个数
代码如下:
#include<stdio.h>
int main()
{
int num=0;
int count=0;
scanf("%d",&num);
while(num)
{
if(num%2==1)
count++;
num=num/2;
}
printf("%d\n",count);
return 0;
}
这个代码存在的问题是,如果输入的是一个负整数,那么结果就是错误的,运行如图:
另一种代码如下:
int main()
{
int num=0;
int i=0;
int count=0;
scanf("%d",&num);
for(i=0;i<32;i++)
{
if(1==((num>>i)&1))
count++;
}
printf("%d\n",count);
return 0;
}
运行结果如下:
菜菜的代码,希望能够帮助到你哟!