如题:这里提出两种实现方法
1、不需要通过循环
int CNByteNum(int x)
{
x=(x & 0x55555555) + ((x>>1) & 0x55555555);
x=(x & 0x33333333) + ((x>>2) & 0x33333333);
x=(x & 0x0F0F0F0F) + ((x>>4) & 0x0F0F0F0F);
x=(x & 0x00FF00FF) + ((x>>8) & 0x00FF00FF);
x=(x & 0x0000FFFF) + ((x>>16) & 0x0000FFFF);
return x;
}
2、通过循环
int RNByteNum(int x)
{
int n=0;
while(x)
{
n++;
x=x&(x-1);
}
return n;
}