依次判断每一位上是不是1
int bitcnt(int x)//求二进制1的个数 { int res=0; while(x) { if(x&1)//当前位为1 res++; x>>=1; } return res; }
每次循环不断清除最右边的1,直到该数为0为止。
int bitcnt(int x) { int res =0 ; while(x) { x&=(x-1) ; // 清除最低位的1 res++; } return res; }