欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 09:54:05
...

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

这个代码存在的问题是,如果输入的是一个负整数,那么结果就是错误的,运行如图:
求一个整数存储在内存中的二进制中1的个数
另一种代码如下:

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;
}

运行结果如下:
求一个整数存储在内存中的二进制中1的个数
菜菜的代码,希望能够帮助到你哟!