您的位置:首页 > 其它

求一个数的二进制中有多少个1的两种解法

2016-09-06 20:00 155 查看
#include <iostream>

int NumberOf1(int n)
{
unsigned int flag = 1;
int count = 0;
while (flag)
{
if (n & flag)
count++;
flag = flag << 1;
}
return count;
}

int NumberOf1(int n)
{
int count = 0;
while (n)
{
++count;
n = (n - 1) & n;//n=1000, n-1=0100,  n=0   n中只有一个1
}
return count;
}
第一种解法必须循环整数的二进制的位数次,而第二种解法循环次数=n中有多少个1次
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: