#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)。