求一个整数存储在内存中的二进制中1的个数

求一个整数存储在内存中的二进制中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;
}

运行结果如下:
在这里插入图片描述
菜菜的代码,希望能够帮助到你哟!

猜你喜欢

转载自blog.csdn.net/Sconnie/article/details/113652380