bitset

Posted qifeng1024

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bitset相关的知识,希望对你有一定的参考价值。

bitset类 有些类似bool数组

全部有1 和 0组成的一个字符数组

 

首先引入头文件

#include <bitset>

 

 

定义一个bitset类对象

bitset<4> bit_val;

意思是定义一个bitset对象,名字叫 bit_val ,长度为4,目前没有赋值 ,也就是 这个值是 0000

bitset<4> bit_val(7);

赋初值为7 ,我们知道 7 的二进制表示为 0111,所以 bit_cal 的值是 0111,也可以写16进制 比如 0x07

当然了也可以直接给0111

string str("111");
bitset<4> bit_val(str);

 

 

位运算

<< >> |  & ~ 都可以用在bitset类上

随便用几个试试:

int main()
{
    bitset<8> val_bit(string("10111011"));
    cout<<val_bit<<endl;
    cout<<(~val_bit)<<endl;
    cout<<(val_bit<<3)<<endl;
    cout<<(val_bit>>3)<<endl;
}

输出结果

10111011
01000100
11011000
00010111

 

 

复制过来bitset的成员函数

对于一个叫做bit的bitset:
bit.size()      返回大小(位数)
bit.count()     返回1的个数
bit.any()       返回是否有1
bit.none()      返回是否没有1
bit.set()       全都变成1
bit.set(p)      将第p + 1位变成1(bitset是从第0位开始的!) 
bit.set(p, x)   将第p + 1位变成x
bit.reset()     全都变成0
bit.reset(p)    将第p + 1位变成0
bit.flip()      全都取反
bit.flip(p)     将第p + 1位取反
bit.to_ulong()  返回它转换为unsigned long的结果,如果超出范围则报错
bit.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错
bit.to_string() 返回它转换为string的结果

也可以到这个网站上查看

http://www.cplusplus.com/reference/bitset/bitset/

 

以上是关于bitset的主要内容,如果未能解决你的问题,请参考以下文章

bzoj 3687: 简单题 bitset

如何编写适用于 32 位和 64 位的 std::bitset 模板

bitset库

bitset库

利用JAVA的BitSet实现数组排序

luogu P4688 [Ynoi2016]掉进兔子洞 bitset 莫队