题目
思路
代码1检查了所有的位,如果是1就加在ans里
代码2只检查到最高位的1
代码1
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int ans = 0;
for (int i = 0; i < 32; i++) {
ans += (n >> i) & 1;
}
return ans;
}
}
代码2
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int ans = 0;
while (n != 0){
ans += (n & 1);
n >>>= 1; //右移一位,并且高位补0
}
return ans;
}
}