转自:https://www.cnblogs.com/xenny/p/9549002.html
一,概述
C++的 bitset 在 <bitset> 头文件中,
它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间
二,初始化
可以用以下几种方式定义bitset,值得注意的是,bitset在定义的时候必须定义大小,这里8便是我们定义的长度,定义一个空 bitset 时所有值默认为 0
bitset<8> b; // 00000000 bitset<8> bit(8); // 00010000 bitset<8> tp1(string("01010101")); // 10101010 bitset<8> tp2(bit); // 00010000 cout << " b = " << b << endl; cout << "bit = " << bit << endl; cout << "tp1 = " << tp1 << endl; cout << "tp2 = " << tp2 << endl;
① 其中,打印出来的顺序和实际顺序是反的(不太知道为什么)
② bit(8),就是把 bit(2的3次方),让下标为 3 的位置为 1.
③ 用字符串的话,实际的数值应该 和字符串 是反过来的
三,函数
bit.size(); //返回大小(长度)
bit.count(); //返回1的个数
bit.any(); //返回是否有1
bit.none(); //返回是否没有1
bit.set(); //全部置为1
bit.set(p); //将p+1(下标从0开始!!)位置为1
bit.set(p,n); //将p+1位置为n
bit.reset(); //全部置为0
bit.reset(p); //将p+1位置为0
bit.flip(); //全部取反 等同于 (~bit)
bit.flip(p); //将p+1位取反
bit.to_ulong(); //返回转换为 unsigned long 的结果,超范围会报错
bit.to_ullong();//返回转换为 unsigned long long 的结果,超范围报错
bit.to_string();//返回转换为 string 的结果
========== ========= ======== ====== ===== ==== === == =
原文:https://www.cnblogs.com/asdfknjhu/p/12606329.html