题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
按位与运算
n&(n-1)的作用:将n的二进制表示中最低位的1改为0;
应用1:判断一个数是否是2的次幂;
n>0&&(n&(n-1)==0)
应用2:求某一个树的二进制中1的个数
如下:
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
n=n&(n-1);
count++;
}
return count;
}
}