在 C++ 中查找大型二进制数中 1 的个数


给定一个 32 位无符号二进制数,任务是计算设置的位数,即其中存在的“1”。

例如

输入

N = 00000000000000100111

输出

4

说明:给定无符号数中存在的总设置位数为 4,因此我们将输出设置为“4”。

解决此问题的方法

我们给定一个 32 位无符号二进制数。任务是计算其中存在多少个“1”。

要计算给定二进制数中存在的“1”的数量,我们可以使用内置 STL 函数“__builtin_popcount(n)”,该函数将二进制数作为输入参数。

  • 将二进制数 N 作为输入。
  • 函数 count1Bit(uint32_t n) 将 32 位二进制数作为输入,并返回二进制数中存在的“1”的计数。
  • 内置函数 __builtin_popcount(n) 将“n”作为参数输入,并返回计数。

示例

实时演示

#include<bits/stdc++.h>
using namespace std;
int count1bits(uint32_t n) {
   return bitset < 32 > (n).count();
}
int main() {
   uint32_t N = 0000000010100000011;
   cout << count1bits(N) << endl;
   return 0;
}

运行以上代码将生成以下输出:

输出

4

在给定的数字中,其中存在 4 个设置位或“1”。因此,输出为“4”。

更新于: 2021 年 2 月 23 日

3K+ 浏览量

启动你的 职业生涯

通过完成课程获得认证

开始
广告