您的位置:首页 > 其它

微软100题(28)整数的二进制表示中1的个数

2015-05-26 15:33 232 查看
题目:输入一个整数,求该整数的二进制表达中有多少个1。

例如输入10,由于其二进制表示为1010,有两个1,因此输出2



int NumberOfOneInt(int n)
{
	int cnt = 0;
	while (n)
	{
		cnt++;
		n = n&(n-1);
	}
	return cnt;
}
int NumberOfOneInt2(int n)//只适用于正数
{
	int cnt = 0;
	for (;n>0;n=n>>1)
	{
		if(n & 0x1) cnt++;
	}return cnt;
}
int NumberOfOneInt3(int n)
{
	int cnt = 0;
	unsigned int flag = 1;
	while (flag)
	{
		if(n & flag) cnt++;
		flag = flag<<1;
	}
	return cnt;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: