码迷,mamicode.com
首页 > 其他好文 > 详细

求一个数的二进制数中所含1的个数的代码实现

时间:2014-06-20 11:57:15      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:c   一个整数的二进制中1的个数   

#include<stdio.h>

int numberOf1_solution1(int n)/*将一个正数以此向右移一位,与1做与运算,直到这个数为零*/
{
	int count = 0;
	while (n)
	{
		if (n&1)
			count++;
		n=n >> 1;
	}
	return count;
}

int numberOf1_solution2(int n)/*将1以此向右移动以为,与一个数(正负数均可)做与运算,直到1出现上溢为止*/
{
	int count = 0, i = 1;
	while (i)
	{
		if (n&i)
			count++;
		i = i << 1;
	}
	return count;
}

int numberOf1_solution3(int n)/*将一个数减去1后再与本身相与,便可减少一个1,利用这个原理求1的个数*/
{
	int count = 0;
	while (n)
	{
		n = (n - 1)&n;
		count++;
	}
	return count;
}

int main()
{
	printf("%d\n",numberOf1_solution3(5));
	return 0;
}

求一个数的二进制数中所含1的个数的代码实现,布布扣,bubuko.com

求一个数的二进制数中所含1的个数的代码实现

标签:c   一个整数的二进制中1的个数   

原文地址:http://blog.csdn.net/nyist327/article/details/28261683

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!