在C ++中查找大二进制数中的1位数目
给定一个32位无符号二进制数,任务是对设置的位进行计数,即其中存在1。
例如
输入: N=00000000000000100111
输出 4
说明: 给定的无符号数中存在的总置位位数为4,因此我们将输出返回为“4”。
解决这个问题的方法
我们提供了一个无符号的32位二进制数。任务是计算其中存在多少个“1”。
要计算给定二进制数中存在的'1'的数量,我们可以使用内置的STL函数'__builin_popcount(n)',该函数将二进制数作为输入参数。
以二进制数N作为输入。
函数count1Bit(uint32_tn)以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”。