剑指offer_二进制中1的个数

96 阅读1分钟

题目链接:www.acwing.com/problem/con…

Code

1 无法解决负数

/**
 * @param {number} n - a positive integer
 * @return {number}
 */
var hammingWeight = function(n) {
    let str = n.toString(2);
    let ans = 0;
    for(let i = 0; i < str.length; i ++){
        if(str[i] === '1') ans ++;
    }
    return ans;
};
  1. 位运算
/**
 * @param {number} n
 * @return {number}
 */
var NumberOf1 = function(n) {
    let count = 0;
    for(let i = 0; i < 32; i ++){
        count += (n >> i & 1)
    }
    return count;
};