写一个函数返回参数二进制中 1 的个数 比如: 15 0000 1111 4 个 1

写一个函数返回参数二进制中 1 的个数

比如: 15 0000 1111 4 个 1

程序原型:
int count_one_bits(unsigned int value)
{
返回 1的位数

}


方法一:原始余2再除2

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int count_one_bits(unsigned int value)
{
	int count = 0;
	while (value)
	{
		if (value % 2 == 1)
		{
			count++;
		}
		value = value / 2;
	}
	return count;
}
 
 

方法2:右移一位与1操作

int count_one_bits(int value)
{
	int count = 0;
	int i = 32;
	while (i)
	{
		if (value & 1 == 1)
		{
			count++;
		}
		value = value >> 1;
		i--;
	}
	return count;
方法三:关注数据再内存存储方式:
int count_one_bits(int value)
{
	int count = 0;
	while (value)
	{
		count++;
		value = value&(value - 1);
	}
	return count;
}
主函数:
int main()
{
	 int num = 0;
	int ret = 0;
	scanf("%d", &num);
	ret = count_one_bits(num);
	printf("count=%d\n", ret);
	system("pause");
	return 0;
}  



猜你喜欢

转载自blog.csdn.net/csdn_baotai/article/details/80029718