image.png
n&1如果为1,代表最右边数字为1,如果为0,代表最右边数字为0
Java中无符号右移,利用>>>
然后不断的把数字右移
image.png
很明显,+的优先级要高于&,所以要加一个(),否则得不出来结果
public class Solution {
public int hammingWeight(int n) {
int res = 0;
while(n != 0) {
res += n & 1;
n >>>= 1;
}
return res;
}
}
网友评论