STL bitset用法总结

时间:2022-12-31 23:17:27

一、头文件

#include<bitset>


二、初始化bitset对象

bitset<n> b;    //b有n位,每位都为0

bitset<n> b(u);    //b是unsigned long型u的一个副本

bitset<n> b(s);   //b是string对象s中含有的位串的副本

bitset<n> b(s, pos, n);   //b是s中位置pos开始的n个位的副本


例子:

(1)

bitset<8> b;

输出b:

0 0 0 0 0 0 0 0 


(2)

bitset<8> b(192);


输出b:

0 0 0 0 0 0 1 1  (输出是从低位输出,b[0]是低位,b[7]是高位)


(3)

bitset<8> b("hello1323");


编译报错


(4)

bitset<8> b("1101");

输出b:

1 1 0 1 0 0 0 0  (字符串中只能出现0和1,否则编译报错)


(5)

string str = "11011110";
bitset<8> b(str, 1, 2);


输出b:

0 1 0 0 0 0 0 0


三、bitset对象上的操作:

假设有一个bitset对象b

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.reset()   把b中所有二进制位都置为0

b.reset(pos)   把b中在pos处的二进制位置为0

b.flip()    把b中所有二进制位逐位取反

b.flip(pos)   把b中在pos处的二进制位取反