二进制中1的个数(简单)
2020年8月16日
题目来源:力扣
解题
&的原理就是相同为1,不同为0
当n&1,n的最右一位为1则结果为1,n的最右一位为0则结果为0
这样就能得到n的最右一位,按位计算1的个数
Java中的位运算符:
>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
这道题只能用>>>来做右移,因为我们只需要1的位数,而不对结果造成影响。
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int res=0;
while(n!=0){
res+=n&1;
n=n>>>1;
}
return res;
}
}