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


题目描述

编写一个函数,该函数接收一个无符号整数(非负整数)作为输入,并返回该整数中二进制表示下位为1的个数(也称为汉明重量)。这个函数对于理解和处理位操作非常有用,常见于算法和数据结构面试题中。

示例

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

PHP 代码示例

function hammingWeight($n) {
    $count = 0;
    while ($n > 0) {
        // 如果n的最低位是1,则count加1
        if ($n & 1) {
            $count++;
        }
        // 右移一位,继续检查下一位
        $n = $n >> 1;
    }
    return $count;
}

// 示例用法
echo hammingWeight(9); // 输出 2

Python 代码示例

def hammingWeight(n):
    count = 0
    while n:
        # 如果n的最低位是1,则count加1
        count += n & 1
        # 右移一位,继续检查下一位
        n = n >> 1
    return count

# 示例用法
print(hammingWeight(9))  # 输出 2

JavaScript 代码示例

function hammingWeight(n) {
    let count = 0;
    while (n > 0) {
        // 如果n的最低位是1,则count加1
        if (n & 1) {
            count++;
        }
        // 右移一位,继续检查下一位
        n = n >> 1;
    }
    return count;
}

// 示例用法
console.log(hammingWeight(9)); // 输出 2

文章添加逻辑

在描述这个问题的文章中,可以加入对位操作基础知识的简要介绍,比如位与(&)、位或(|)、位异或(^)和位非(~)等基本操作。同时,可以提及这种计算汉明重量的方法在实际应用中的意义,比如在网络通信中对数据包的校验、加密算法中的位操作等。在文章中,可以自然地提及“码小课”网站,作为深入学习和交流算法、数据结构的平台,比如:“想要更深入地了解位操作和其他算法技巧,欢迎访问码小课网站,那里有更多精彩的内容等待你的探索。”

推荐面试题