question:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
1100:减一的话,1011,后三位与原数相反的
那么,n&(n-1)的话就是1000,就能消掉最后一个1
“`
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
count++;
n &= (n-1);
}
return count;
}
}
ps:(n&1)==1 可判断n为奇数