问题描述:
Write a function that takes an unsigned integer and returns the number of ’1’ bits it has (also known as the Hamming weight).
For example, the 32-bit integer ’11’ has binary representation 00000000000000000000000000001011, so the function should return 3.
C++:
由于C++中存在uint32_t,直接计算即可
class Solution {
public:
int hammingWeight(uint32_t n) {
if(n == 0) return 0;
int sum = 0;
while(n != 0){
if(n % 2 == 1)
sum++;
n /= 2;
}
return sum;
}
};
然而在Java中,由于不存在无符号数,考虑使用按位与并无符号移位的方法.
Java:
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int sum = 0;
while(n != 0){
sum += (n & 1);
n >>>= 1;
}
return sum;
}
}