bitset是类似于bool数组一样的东西,但是它的每个位置只占1bit
可以在向二进制转换的时候使用,特别是涉及到了负数不好操作的时候
构造:
头文件; #include<bitset>
<常量>
const size=10;//表示位数 bitset<size>bit; //自动初始化为0 bitset<size>bit(整数_各种类型都可以); //如果是浮点数会向下取整 bitset<size>bit(string类型的01串);
若未超出size:高位补0
若超出size:整数只取低size位,string串只取前size位
操作
可以直接赋值 bit=123;
可以直接cout<<bit;//将所有数位都输出
也可以使用下标逐个遍历,类似于数组
单个bitset对象可以进行移位操作
相同大小的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_string() 返回它转换为string的结果
对于应用实例:
2018年第九届蓝桥杯省赛第二题即考到了向二进制的转换,使用bitset大大减少了思维量和编码量