C++笔记-bitest类型

  1. 用于位运算的类,定义在头文件bitset中。能够处理超过最长整型类型的位集合。
  2. 定义和初始化bitset
当定义一个bitset时,需要声明它包含多少个二进制位:
bitset<32> bitvec(1U);   //32位;低位为1,其他位为0

bitset<n> b;    //b有n位;每一位均为0.此构造函数位constexpr
bitset<n> b(u); //b是unsigned long long值u的低n位的拷贝。如果大于该类型ull的长度,则多出的高位位置0

bitset<n> b(s, pos, m, zero, one);  //b是string s从pos开始m个字符的拷贝
bitset<13> bitvec1(0xbeef); //bitvec1默认为13位,高位丢弃;1111011101111
bitset<20> bitvec2(0xbeef); //bitvec2默认位2-位,高位置0;00001011111011101111
//在64位机器中,long long 0ULL是一个64位的0比特,因此~0ULL是64个1
bitset<128> bitvec3(~0ULL); //0~63位为1;63~127位为0
  1. 当使用string字符串来初始化bitset时,可以使用string的字串进行初始化。同时使用string字符串时,下标编号于bitset相反,string中最大的字符(最右)初始化bitset的低位(下标为0的二进制位)。
string str("111111110000000110101");
bitset<32> bitvec5(str, 5, 4);
bitset<32> bitvec6(str, str.size() - 4);    //使用最后4位
  1. bitset的一些操作
b.any()     b中是否有元素
b.all()     b中是否满了
b.none()    b是否为空
b.count()   b中置位的个数
b.size()    一个constexpr函数,返回b中的位数

b.test(pos)     若pos的位置是有元素的,返回true,否则返回false
b.set(pos, v)   设置pos位置为v,v默认为true。
b.set()         如果不传参数,则设置所有位

b.reset(pos)    将pos处的位复位
b.reset()       将b所有位复位

b.flip(pos)     改变位置pos处的状态
b.flip()        改变b中的每一位状态
b[pos]          访问b中pos处的位置

b.to_ulong()    返回一个unsigned long或unsigned long long值,
b.to_ullong()   如果b中位模式不能放入指定的结果类型,则抛出一个overflow_error异常
b.to_string(zero, one)  返回一个string,表示b中的位模式。

os << b     将b中二进制位打印为字符0或1,打印到流os
is >> b     从is中读取字符存入b。当下一个字符不是0或1,或者已经读入了b.size()个时,读取停止。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值