在C ++中查找大二进制数中的1位数目

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

例如

输入:  N = 00000000000000100111

输出 4

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

解决这个问题的方法

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

要计算给定二进制数中存在的'1'的数量,我们可以使用内置的STL函数' __builin_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的位或1。因此,输出为“ 4”。

猜你喜欢