bitset

bitset的函数以及赋值方式、性质

bitset<length> bt;
bt.size(); //返回大小(位数)
bt.count(); //返回 1 的个数
bt.any(); // 返回是否有 1
bt.none(); // 返回是否没有 1
bt.set(); // 全都变成 1
bt.set(p); // 将第 p + 1 位变成 1
bt.set(p, x); // 将第 p + 1 位变成 x
bt.reset(); // 全都变成 0
bt.reset(p); // 将第 p + 1 位变成 0
bt.flip(); // 全都取反
bt.flip(p); // 将第 p + 1 位取反
bt.to_ulong(); // 返回它转换为 unsigned long 的结果,如果超出范围则报错
bt.to_ullong(); // 返回它转换为 unsigned long long 的结果,如果超出范围则报错
bt.to_string(); // 返回它转换为 string 的结果

CODE

#include <bits/stdc++.h>

using namespace std;

bitset<11> bt;

int main() {
    int x = 60;
    bitset<60> A(x); //把x的二进制放入A
    bt[0] = 1;  //把第一位置成1
    bt.set(4);  // 把第四位置成1
    cout << bt << endl;
    bt.flip(); // 所有位取反
    cout << bt << endl;
    bt.reset(); // 全部位重置为0
    cout << bt << endl;
    if(bt.none()) 
        cout << "bt 为空";
    if(bt.any()) 
        cout << "bt 不为空";
    
    cout << bt.test(4) << endl; //返回第四位的值
    cout << bt.count() << endl; //返回1的数量

    bitset<12> bt1(1234); // 把1234转为二进制放入bitset
    bitset<1212> bt2("1101000110"); //直接赋值

    bitset<12> btt;
    int n = 15; 
    btt = n; // 把n转为二进制放入bitset
    cout << btt.to_ulong() << endl; // 转为十进制输出

    // bitset 运算符只有 == 没有 > < 
    // bitset 当做一个数字进行 & | ^  << >>  等位运算
    return 0;
}
posted @ 2021-08-22 19:46  ccz9729  阅读(178)  评论(1编辑  收藏  举报