当前位置: 面试刷题>> 数1的个数 (经典算法题500道)


题目描述补充

题目:数1的个数(在二进制表示中)

给定一个非负整数 n,你需要计算并返回该整数在二进制表示下数字 1 出现的次数。

示例

示例 1:

输入: 8
输出: 1
解释: 8 的二进制是 1000,有 1 个 1。

示例 2:

输入: 11
输出: 3
解释: 11 的二进制是 1011,有 3 个 1。

解答

PHP 示例代码

function hammingWeight($n) {
    $count = 0;
    while ($n > 0) {
        $count += $n & 1;
        $n >>= 1; // 右移一位,相当于 n = n / 2,向下取整
    }
    return $count;
}

// 测试
echo hammingWeight(8);  // 输出: 1
echo hammingWeight(11); // 输出: 3

Python 示例代码

def hammingWeight(n):
    count = 0
    while n:
        count += n & 1
        n >>= 1
    return count

# 测试
print(hammingWeight(8))  # 输出: 1
print(hammingWeight(11)) # 输出: 3

JavaScript 示例代码

function hammingWeight(n) {
    let count = 0;
    while (n > 0) {
        count += n & 1;
        n >>= 1; // 右移一位
    }
    return count;
}

// 测试
console.log(hammingWeight(8));  // 输出: 1
console.log(hammingWeight(11)); // 输出: 3

码小课相关内容分享

码小课网站中有更多关于算法和数据结构的内容分享,包括但不限于排序算法、搜索算法、图论算法、动态规划等。此外,还有大量关于编程语言的进阶技巧和实践案例,帮助学习者深入理解并掌握编程技能。无论你是初学者还是有一定基础的程序员,都能在码小课找到适合自己的学习内容。

推荐面试题