题目:
思路:
- 可以使用字符串思维解题,先把这个二进制数看成一串字符串,然后统计该字符串中 ” 1 “ 出现的频率即可。
- 使用二进制数的移位和 与运算
- 每次对该二进制数的最后一个数字进行处理,
- 首先我们需要知道一个运算:任何一个二进制数与 1 进行与运算,只要这个 二进制数的最后一位数是 1 那么运算的结果就是 1 。否则为 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 >>>= 1;
}
return res;
}
}