记性越来越差了,基本上都有点忘了,决定写点blog复习一下
1头文件<bitset>
2初始化
bitset<n> b; b有n位,每位都是0
bitset<n> b(u); b是unsigned long型u的一个副本,会自动变成2进制,按位存,从下标0开始放
bitset<n> b(s); b是string对象s中含有的位串副本。 存入方式是将string从右到左,依次放入b中,例如1100 ,放入后就是001100000000....
bitset<n> b(s,pos,n); b是s中从你位置pos开始的,n个位的副本,读取方式依然是从右到左。
例如string str("10110101");
bitset <32> bit2(str,5,3);
bitset <32> bit3 (str,str.size()-4);
3 bitset对象的操作
string str("10110101");
bitset <32> bit2(str,5,3);
bitset <32> bit3 (str,str.size()-4);
bitset <32> bit4(5);
bool flag1 = bit4.any(); //b 中是否存在置为 1 的二进制位
bool flag2 = bit4.none(); //b 中不存在置为 1 的二进制位吗
size_t bcount = bit4.count(); //b 中置为 1 的二进制位的个数
size_t bsize = bit4.size(); // b 中二进制位的个数,大小,这里的都是32
int num = bit4[1]; //访问 b 中在 pos 处二进制位
bool flag3 = bit4.test(2); // b 中在 pos 处的二进制位置为 1 么?
bit3.set(); // 把 b 中所有二进制位都置为 1
bit4.set(4); //把 b 中在 pos 处的二进制位置为 1
bit4.flip(); //把 b 中所有二进制位逐位取反
bit4.flip(0); // 把 b 中在 pos 处的二进制位取反
unsigned long num2 = bit4.to_ulong(); //用 b 中同样的二进制位返回一个 unsigned long 值
string str2 = bit4.to_string();
bit4.reset(); //把 b 中所有二进制位都置为 0