bitset是c++的一个类库,其元素值只能为0或1,可用下标访问其元素或对元素赋值。bitset的每个元素仅占1bit空间。
定义bitset
使用bitset<> a语句。<>内为bitset的大小(长度),a为定义的bitset名。bitset可以通过构造方法进行初始化。
无参构造:bitset中所有元素均为0。
参数为整型构造:bitset中存储该整型参数的二进制串。例如:bitset<8> a(5) 输出a,显示 00000101。特别的,当参数的二进制串超过定义的bitset大小,则bitset会抛弃该参数二进制串的高位进行构造。
参数为字符串构造:bitset中存储该字符串,但该字符串必须为只包含‘0‘或‘1‘的01串。例如:bitset<8> a("1001") 输出a,显示00001001。特别的,当字符串长度超过定义的bitset大小,bitset会抛弃字符串的低位进行构造(右低左高)。
bitset的函数
定义: bitset<8> a
a.size(): 返回大小(长度)
a.count(): 返回a中1的个数
a.any(): 返回a中是否有1
a.none(): 返回a中是否没有1
a.set(): 将a中所有元素设为1
a.set(pos): 将a中下标为pos处元素设为1(下标从0开始)
a.set(pos,x): 将a中下标为pos处元素设为x,x为0或1,当x>1时,将被视为1(非0)
a.reset(): 将a中所有元素设为0
a.reset(pos): 将a中下标为pos处元素设为0(下标从0开始)
a.test(pos): 返回下标为pos处的元素值
a.flip(): 将全部元素翻转(0变为1,1变为0)
a.flip(pos): 将下标为pos处的元素翻转(0变为1,1变为0)
a.to_ulong(): 返回将a转化为unsigned long类型的值
a.to_ullong(): 返回将a转化为unsigned long long类型的值
a.to_string(): 返回将a转化为字符串类型的值
bitset运算
bitset可进行&(与),|(或),^(异或),<<(左移),>>(右移),~(按位取反)等运算。
原文:https://www.cnblogs.com/zhou-xf/p/14710279.html