C++ bitset的妙用

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大大减少了思维量和编码量

https://blog.csdn.net/qq_44786250/article/details/104301602

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值