输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 输入10 返回2 //思路:
如果我们继续 1000 -1 =0111 1000 &0111=0000
每次消除最右边的一个0,几次运算就有几个0
public int NumberOf1(int n) {
int count=0;
while(n!=0){
count++;
//这里做与运算正好可以把原本最右边的1后面的0都给去掉
//1 1 0 0 & 1 0 1 1=10000
n=n&(n-1);
}
return count;
}