题目:输入一个整数,求该整数的二进制表达中有多少个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;
}