【练习】整数的二进制表示中1 的个数

/************************************************************************/
/*
整数的二进制表示中1 的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。
例如输入10,由于其二进制表示为1010,有两个1,因此输出2
*/
/************************************************************************/

#include <iostream>
using namespace std;

int NumberOfOne(int n)//算法原理:十进制与二进制间的转化//此算法不好,原因1,除法效率比移位运算效率低,原因2,此算法无法计算负数情况
{
	int result=0;
	while (n>0)
	{
		if (n%2==1)
		{
			result++;
		}
		n/=2;
		
	}
	
	return result;
}
int NumberOf1_Solution1(int i)
{
	int count = 0;
	unsigned int flag = 1;
	while(flag)
	{
		if(i & flag)
			count ++;
		flag = flag << 1;
	}
	return count;
}
int main()
{
	int n;

	cout<<"input n\n";
	cin>>n;
// 	cout<<NumberOfOne(n);
// 	cout<<endl;
	cout<<NumberOf1_Solution1(n);
	return 0;
}

  

posted @ 2011-11-23 16:01  refazy  阅读(257)  评论(0编辑  收藏  举报