#12318. 统计二进制中 1 的个数

统计二进制中 1 的个数

统计二进制中 1 的个数

题目描述

给定一个整数 n,请统计它的二进制表示中有多少个 1

例如:

  • n = 5 → 二进制表示为 101,其中有 2 个 1
  • n = 7 → 二进制表示为 111,其中有 3 个 1

输入格式

输入一个整数 n


输出格式

输出一个整数,表示 n 的二进制中 1 的个数。


数据范围

  • 0 ≤ n ≤ 10^9

输入输出样例

输入 1

5

输出 1

2

输入 2

7

输出 2

3

解题思路提示

  1. 方法一:逐位判断
    • 循环枚举每一位,判断 (n >> i) & 1 是否为 1。
  2. 方法二:内置函数(C++)
    • __builtin_popcount(n) 直接返回 n 的二进制中 1 的个数。
    • 如果 n 很大(long long),可用 __builtin_popcountll(n)