# 二进制中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
// 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
更新时间: 5/5/2023, 11:19:52 AM