输入一个数字,输出这个数的二进制中1的个数
#include<iostream>
#include<cstdlib>
using namespace std;
//int numberof1(int n)
//{
// int count=0;
// unsigned int flag=1;
// 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;
}
return count;
}
bool two(int n)//判断是不是2的次方
{
if(n<0)
return false;
while (n)
{
n=(n-1)&n;
}
if(n==0)
return true;
else
return false;
}
int difindex(int m,int n)//计算一个数变换多少位可以得到另一个数
{
int k=0;
k=m^n;
int count=0;
while (k&1)
{
count++;
k=k>>1;
}
return count;
}
int main()
{
int ret=numberof1(9);
cout<<ret<<endl;
int ret2=two(1024);
cout<<ret2<<endl;
int ret3=difindex(8,7);
cout<<ret3<<endl;
system("pause");
return 0;
}