Bitset

C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
bitset<4> bitset1; 
//无参构造,长度为4,默认每一位为0

bitset<8> bitset2(12);
//长度为8,二进制保存,前面用0补充

string z = "100101";
bitset<10> bitset3(z);
//长度为10,前面用0补充

char s2[] = "10101";
bitset<13> bitset4(s2);
//长度为13,前面用0补充

cout << bitset1 << endl; //0000
cout << bitset2 << endl; //00001100
cout << bitset3 << endl; //0000100101
cout << bitset4 << endl; //0000000010101
bitset<2> bitset1(12);
//12的二进制为1100(长度为4),但bitset1的size=2,只取后面部分,即00

string x = "100101";
bitset<4> bitset2(x);
//x的size=6,而bitset的size=4,只取前面部分,即1001

char s2[] = "11101";
bitset<4> bitset3(s2);
//与bitset2同理,只取前面部分,即1110

cout << bitset1 << endl; //00
cout << bitset2 << endl; //1001
cout << bitset3 << endl; //1110

bitset<8> foo("10011011");
string s = foo.to_string();
//将bitset转换成string类型
unsigned long a = foo.to_ulong();
//将bitset转换成unsigned long类型
unsigned long long b = foo.to_ullong();
//将bitset转换成unsigned long long类型
cout << s << endl; //10011011
cout << a << endl; //155
cout << b << endl; //155