C++ bitset用法

bitset的一些特点

  • bitset存储二进制数,所以只能有0和1。
  • bitset空间占用很小——bitset中的一个元素一般只占1 bit,相当于一个char元素所占空间的八分之一。
  • bitset中的每个元素都能单独被访问,例如对于一个叫做 f 的bitset,表达式 f [3]访问了它的第4个元素,就像数组一样。bitset按下标输出时,是倒序的。
  • bitset有一个特性:整数类型和布尔数组都能转化成bitset。
  • bitset的大小在编译时就需要确定。

bitset类型的初始化: 

#include 
using namespace std;
int main()
{
    bitset <8> f (string("00001011"));
    cout << f << endl;
    f = 11;
    cout << f << endl;
    return 0;
}

 bitset支持所有位运算

#include 
using namespace std;
int main()
{
    bitset <8> f (string("00010110"));
    bitset <8> g (string("00110110"));
    bitset <8> bit;
    bit = f ^ g;
    cout << bit << endl;
    bit = f | g;
    cout << bit << endl;
    bit = f & g;
    cout << bit << endl;
    cout << (f << 1) << endl;
    cout << (f >> 1) << endl;
    return 0;
}

常用函数 

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的结果

 

你可能感兴趣的:(【C++,STL库】)