#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
解题思路提示
- 方法一:逐位判断
- 循环枚举每一位,判断
(n >> i) & 1
是否为 1。
- 循环枚举每一位,判断
- 方法二:内置函数(C++)
__builtin_popcount(n)
直接返回n
的二进制中 1 的个数。- 如果
n
很大(long long
),可用__builtin_popcountll(n)
。