按照《编程之美》书上的方法
参见 http://blog.csdn.net/justpub/article/details/2292823提供的方法
int Count(int n)
{
int num=0;
while(n)
{
if(n%2==1)
num++;
n/=2;
}
return num;
}
int Count(int n)
{
int num=0;
while(n)
{
num+=n & 0x01;
n>>=1;
}
return num;
}
int Count(int n)
{
int num=0;
while(n)
{
n&=(n-1);
num++;
}
return num;
}
int Count(int n)
{
int num=0;
int flag=1;
while(flag)
{
if( n & flag)
num++;
flag<<=1;
}
return num;
}
参见 http://blog.csdn.net/justpub/article/details/2292823提供的方法
int Count(unsigned n)
{
n=n-((n>>1) & 0x55555555);
n=(n & 0x33333333) + ((n>>2) & 0x33333333);
n=(n+ (n>>4)) & 0x0F0F0F0F;
n=n+(n>>8);
n=n+(n>>16);
return n & 0x0000003F;
}