#include<iostream>
using namespace std;
int getNumber1(int n)
{
int r = 2, sum = 0;
while(n)//范式:整数n对应的r进制中的各位数字为下面的n % r (逆序)
{
if(1 == n % r)
sum++;
n /= r;
}
return sum;
}
int getNumber2(int n)
{
int sum = 0;
while(n)
{
if(1 == (n & 1)) //"=="的优先级比"&"高
sum++;
n >>= 1;
}
return sum;
}
int getNumber3(int n)
{
if(0 == n)
return 0;
//n的二进制中1的个数比n & (n - 1)的二进制中1的个数多1个
return getNumber3(n & (n - 1)) + 1;
}
int getNumber4(int n)
{
int sum = 0;
while(n)
{
sum++;
n = n & (n - 1);
}
return sum;
}
int main()
{
cout << getNumber1(65) << endl;
cout << getNumber2(65) << endl;
cout << getNumber3(65) << endl;
cout << getNumber4(65) << endl;
return 0;
}
二进制中1的个数????(某公司校园招聘网测题目)
本文转载:CSDN博客