您的位置:

bitset用法详解

一、bitset用法有什么用

bitset是STL中的一种容器,用来存储二进制数,可以快速的进行位运算。比如在一些场景中,需要对多个状态进行保存和判断,或者需要进行序列的去重。这时bitset就可以派上用场了。

使用bitset可以将二进制数表示为一个长字符串,使得我们可以方便的对位进行操作,比如获取某一位的值、设置某一位的值、取反等。而且bitset中的一些高级函数也可以简化我们对位运算的操作。

二、bitset用法

1. bit用法

bitset可以用来表示二进制数,并且可以对每一位进行读取和设置,具体可以参考下面的代码:

bitset<8> bit(25); //将十进制数25表示为二进制数

cout << bit << endl; //输出二进制数

cout << bit[0] << endl; //获取第1位二进制数的值

bit[1] = 1; //将第2位二进制数设置为1

cout << bit << endl; //输出修改后的二进制数

2. bitset函数

bitset还提供了一些常用的函数,比如count(), set(), reset(), flip()等,以方便我们进行位运算。这些函数的具体用法如下:

bitset<8> bit(25);

cout << bit.count() << endl; //输出二进制数中1的位数

bit.set(2); //将第3位二进制数设置为1

cout << bit << endl;

bit.reset(2); //将第3位二进制数设置为0

cout << bit << endl;

bit.flip(); //将二进制数全部取反

cout << bit << endl;

3. bitset头文件

bitset是C++ STL提供的一个容器,需要包含 头文件。

4. bite用法视频

对于关于bitset的学习视频,可以参考下面这个视频:https://www.bilibili.com/video/BV1pb411U7WE

5. bite用法

可以使用bitset实现一些和二进制相关的算法,比如检查一个数是否为2的次幂,方法如下:

bool check_pow_of_2(int n) {

    if(n <= 0)
        return false;

    return ((n & (n - 1)) == 0);
}

int main() {

    int n = 8;

    if(check_pow_of_2(n))
        cout << n << " is power of 2" << endl;
    else
        cout << n << " is not power of 2" << endl;
}

6. bitter用法

可以使用bitset实现序列去重,方法如下:

#include 
#include 
   

using namespace std;

const int N = 210;

int n, a[N];

int main() {

    cin >> n;
    for(int i = 0; i < n; i ++)
        cin >> a[i];

    bitset<10010> bs;

    for(int i = 0; i < n; i ++) {
        if(!bs.test(a[i])) { //如果bs中没有记录a[i]
            cout << a[i] << " "; //输出a[i]
            bs.set(a[i]); //将a[i]对应的位置设为1
        }
    }

    return 0;
}

   
  

7. abitof用法

可以使用bitset实现一些和位运算相关的算法,比如求一个数的二进制表示中1的个数,方法如下:

int count_bits(int n) {

    bitset<32> b(n);
    return b.count();
}

int main() {

    int n = 25;
    cout << "The number of bits set for " << n << " is:"
         << count_bits(n) << endl;

    return 0;
}