当前位置: 面试刷题>> 位和2位字符 (经典算法题500道)


首先,我会尝试补充完整这道题目描述,然后分别给出PHP、Python和JavaScript的示例代码。

题目描述

编写一个函数,该函数接受一个整数作为输入,并返回该整数的二进制表示中所有1位(即二进制中的位和)的数量。

示例

  • 输入:9
  • 输出:2 解释:9的二进制表示为1001,其中包含两个1。

PHP 示例代码

function countBitsInBinary($num) {
    $count = 0;
    while ($num > 0) {
        $count += $num & 1; // 检查最低位是否为1
        $num = $num >> 1; // 右移一位
    }
    return $count;
}

echo countBitsInBinary(9); // 输出:2

Python 示例代码

def count_bits_in_binary(num):
    count = 0
    while num > 0:
        count += num & 1  # 检查最低位是否为1
        num = num >> 1    # 右移一位
    return count

print(count_bits_in_binary(9))  # 输出:2

JavaScript 示例代码

function countBitsInBinary(num) {
    let count = 0;
    while (num > 0) {
        count += num & 1; // 检查最低位是否为1
        num = num >> 1;   // 右移一位
    }
    return count;
}

console.log(countBitsInBinary(9)); // 输出:2

额外提示

  • 这种方法通过不断检查整数的最低位是否为1,并右移整数来逐个检查每一位。
  • 对于大整数,这种方法是有效的,但在某些情况下,可能需要考虑性能优化,例如使用内置函数或位操作技巧来加速处理。
  • 码小课网站中有更多关于算法和数据结构的内容分享给大家学习,可以深入学习更多高效的编程技巧和算法思想。
推荐面试题