统计二进制数中1的个数,用一个函数返回参数二进制中1的个数

统计二进制数中1的个数,用一个函数返回参数二进制中1的个数

#include<stdio.h>
int count_bit(unsigned int num);
int main()
{
	int num = 0;
	int count = 0;
	scanf("%d", &num);
	count = count_bit(num);

	return 0;
}
int count_bit(int num)//最优解
{
	int count = 0;
	while (num)
	{
		num = num & (num - 1);//n与(n-1)按位与运算,结果总是会使二进制中1的个数减少1
		count++;
	}
	return count;
}

第二种方法


int count_bit( int num)//补码结果与1按位与运算也能得到结果,过程形似短除法
{
	int i = 0;
	int count = 0;
	for (i = 0; i < 32; i++)
	{
		if (((num >> i) & 1) == 1)//为什么按位与要从移位0开始计算呢?移位0表示原数开始算
		{                          //移位31表示原数只剩下最高位
			count++;
		}          
	}
	return count;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务