第二种方法的更好一些
/* Note:Your choice is C IDE */
#include "stdio.h"
/*一个非负数的二进制有多少个1*/
int get_n_1(unsigned int num)
{
int count=0;
while(num!=0)
{
if(num&0x1)
{
count++;
}
num>>=1;
}
return count;
}
int get_n_1_v2(unsigned int num)
{
int count=0;
while(num)
{
num=num&(num-1);
count++;
}
return count;
}
void main()
{
int num=6;
int ret=get_n_1(num);
printf("ret=%d\n",ret);
ret=get_n_1_v2(num);
printf("in v2 ret=%d\n",ret);
}