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

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

程序员文章站 2022-07-15 09:50:17
...

这里介绍两种算法 用-1来做例子

1.

#include<stdio.h>
int main()
{
	int num = -1;
	int count = 0;
	int i = 0;
	for (i = 0; i < 32; i++)
	{
		if ((num >> i) & 1 == 1)
			count++;
	}
	printf("%d\n", count);
	return 0;
}

上述的方法一能够解决该问题,但是效率不高,大量的循环是无意义

2。

#include<stdio.h>
int main()
{
	int num = -1;
	int count = 0;
	int i = 0;
	while(num)
	{
		num=mun&(num-1)
			count++;
	}
	printf("%d\n", count);
	return 0;

}

这个方式解决了效率低的问题 但很难想到

num=num&(num-1)  从右到左依次取消掉“1”



相关标签: C语言