📜  int bitset 的个数 - C++ (1)

📅  最后修改于: 2023-12-03 15:15:50.861000             🧑  作者: Mango

int bitset 的个数 - C++

简介

bitset 是 C++ STL 中的一个库,用于创建和操作二进制位集合。它有以下特点:

  • 速度快
  • 占用空间小
  • 支持位运算

bitset 主要用于位运算相关的问题,可以用来压缩存储数据,也可以用来判断某一个位是否为 0 或 1。

本文将介绍如何使用 bitset 计算一个整数的二进制数中有多少个 1。

代码实现

我们需要定义一个函数,输入一个整数,输出其二进制数中 1 的个数。

#include <bitset>
#include <iostream>

int countBits(int num) {
    std::bitset<32> binary(num);
    int count = 0;
    for (int i = 0; i < 32; i++) {
        if (binary[i] == 1) {
            count++;
        }
    }
    return count;
}

int main() {
    int num = 17;
    std::cout << "The number of 1 bits in " << num << " is " << countBits(num) << std::endl;
    return 0;
}

在上面的代码中,我们首先将整数转换为二进制的位集合,并将其存储在 std::bitset<32> 对象 binary 中。

然后我们使用一个循环遍历 binary 中的所有位,检查每一位是否为 1。如果是,我们就将 count 变量加一。

最后,我们返回 count 的值,即输入整数的二进制数中 1 的个数。

总结

本文介绍了如何使用 C++ STL 中的 bitset 计算一个整数的二进制数中有多少个 1。这是一个很实用的技巧,在算法和数据结构中经常用到。