📜  计算整数 c++ 中的设置位(1)

📅  最后修改于: 2023-12-03 14:57:31.304000             🧑  作者: Mango

计算整数在 C++ 中的设置位

在 C++ 中,我们经常需要对整数进行位操作。一个常见的问题是计算一个整数中设置位的数量。本文将向程序员介绍如何在 C++ 中计算一个整数中设置位的方法。

方法一:使用位运算计算设置位的数量

下面是一个使用位运算计算设置位数量的示例代码:

int countSetBits(int num) {
  int count = 0;
  while (num) {
    count += num & 1;
    num >>= 1;
  }
  return count;
}

上面的代码使用了一个循环,每次迭代时,我们通过 num & 1 来检查 num 的最低位是否为 1。如果是,则计数器 count 增加 1。然后,我们通过右移操作 num >>= 1num 的二进制表示向右移动一位,最低位的值被丢弃。

使用上面的函数,我们可以计算任何整数中设置位的数量。下面是一个使用示例:

int num = 42;
int setBits = countSetBits(num);
std::cout << "Number of set bits in " << num << " is: " << setBits << std::endl;

输出:

Number of set bits in 42 is: 3
方法二:使用内置函数计算设置位的数量

C++11 提供了一个内置函数 std::bitset 来处理二进制表示,我们可以使用它来计算设置位的数量。

下面是一个示例代码:

int countSetBits(int num) {
  std::bitset<sizeof(int) * 8> bits(num);
  return bits.count();
}

上面的代码通过 std::bitset 将整数 num 转换为二进制表示,并使用 count() 函数计算设置位的数量。

使用示例:

int num = 42;
int setBits = countSetBits(num);
std::cout << "Number of set bits in " << num << " is: " << setBits << std::endl;

输出与方法一相同:

Number of set bits in 42 is: 3
总结

本文介绍了两种方法来计算整数在 C++ 中的设置位数量。通过使用位运算或 std::bitset,我们可以轻松地实现这个功能。

建议根据实际需求选择适合的方法。如果希望更高效的方法,可以使用位运算;如果希望更简洁的代码,可以使用 std::bitset