# 二进制中1的个数
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/er-jin-zhi-zhong-1de-ge-shu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。
提示:
- 输入必须是长度为
32的 二进制串 。
//循环移位
var hammingWeight = function(n) {
let res = 0
while(n){
if(n&1) res++
// 注意:>> 此运算符右移左边空出的位是根据最高位是0和1来进行填充的
// 所以这里使用 >>>
n>>>=1
}
return res
};
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
// n & (n−1),其结果恰为把 n 的二进制位中的最低位的 1 变为 0 之后的结果。
var hammingWeight = function(n) {
let res = 0
while(n){
res++
n = n&n-1
}
return res
};
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9