计算一个二进制数中1的个数,可以使用以下两种方法:
方法一:使用位运算符
C++中,可以使用位运算符来计算二进制数中1的个数。具体方法如下:
- 定义一个变量count,表示当前二进制数中1的个数。初始值为0。
- 使用while循环,当输入的二进制数不为0时,进行如下操作:
- 对于任意一个二进制数,它和它减一的结果二进制上有且只有一个bit不同。
- 根据这个定理,可以使用如下位运算得到二进制数中1的个数:n = n & (n-1),每次将n和n-1做一次&运算,就可以将n中最右边一个1变为0,count自增1。
- 循环结束后,返回变量count即可。
以下是用C++代码实现的示例:
int countOne(int n) {
int count = 0;
while (n) {
n = n & (n - 1);
count++;
}
return count;
}
例如,假设输入的二进制数为10110,我们调用该函数后,返回的结果为3,表示二进制数10110中有3个1。
方法二:使用bitset库
C++中,还可以使用标准库bitset来处理二进制数。具体方法如下:
- 定义一个bitset对象,将输入的二进制数保存到该对象中。
- 使用count函数,计算bitset对象中1的个数。
- 返回count函数的结果。
以下是用C++代码实现的示例:
#include <bitset>
using namespace std;
int countOne(int n) {
bitset<32> binary(n); // 将输入的二进制数保存到bitset对象中
return binary.count(); // 计算bitset对象中1的个数
}
例如,假设输入的二进制数为10110,我们调用该函数后,返回的结果为3,表示二进制数10110中有3个1。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++如何计算二进制数中1的个数 - Python技术站