【STL】【bitset 二进制】【总结】使用biset进行二进制操作

【STL】【bitset 二进制】【总结】使用biset进行二进制操作

1、简介

  • bitset是用来进行一些状态储存的操作。类似于一个标记数组,又类似于状压里面的二进制。

    • 它与状压的共同点是都可以直接进行一些二进制操作。而且好用的是它类似于动态数组,可以开很多位,方便对每一位进行操作。
    • 需要调用bitset库。
    • 位数左边是高位,右边是低位。从0开始。可以直接访问为b[0]

    2、初始化对象

  • 格式 说明
    bitset b b有n位,每位都为0
    bitset b(u) b是unsigned long型u的一个副本
    bitset b(s) b是string对象s中含有的位串的副本
    bitset b(s, pos, n) b是s中从位置pos开始的n个位的副本
  • 需要先声明大小n

  • 可以直接进行赋值操作和二进制运算
    • int num = 9
      bitset<10> bit = num
    • bitset<10> a("1001")
    • biiset<10> b;
      b<<1;//b整体左移
      b|=10; //b或 1010

3、操作函数

函数名 使用说明
b.any() b中是否存在置为1的二进制位?
b.none() b中不存在置为1的二进制位吗?
b.count() b中置为1的二进制位的个数
b.size() b中二进制位的个数
b[pos] 访问b中在pos处的二进制位
b.test(pos) b中在pos处的二进制位是否为1?
b.set() 把b中所有二进制位都置为1
b.set(pos) 把b中在pos处的二进制位置为1
b.reset() 把b中所有二进制位都置为0
b.reset(pos) 把b中在pos处的二进制位置为0
b.flip() 把b中所有二进制位逐位取反
b.flip(pos) 把b中在pos处的二进制位取反
b.to_ulong() 用b中同样的二进制位返回一个unsigned long值
os << b 把b中的位集输出到os流

猜你喜欢

转载自blog.csdn.net/Floraqiu/article/details/81541664