foo.size()
返回大小(位数)foo.count()
返回1的个数foo.any()
返回是否有1foo.none()
返回是否没有1foo.set()
全都变成1foo.set(p)
将第p + 1位变成1foo.set(p, x)
将第p + 1位变成xfoo.reset()
全都变成0foo.reset(p)
将第p + 1位变成0foo.flip()
全都取反foo.flip(p)
将第p + 1位取反foo.to_ulong()
返回它转换为unsigned long的结果,如果超出范围则报错foo.to_ullong()
返回它转换为unsigned long long的结果,如果超出范围则报错foo.to_string()
返回它转换为string的结果
#include <iostream>
#include <bitset>
using namespace std;
int main(){
// 例如,以下代码创建两个bitsets,然后显示它们:bitsets强在可以按位进行异或等操作
// 创建一个8位长的bitset
bitset<8> bs; //创建一个x位的bitsets
// 显示这个bitset
for (int i = (int)bs.size(); i > 0;) {
i--;
cout << bs[i] << " ";
}
cout << endl;// 创建另一个bitset
bitset<8> bs2((long)131);// 显示
for (int i = (int)bs2.size(); i > 0; ) {
i--;
cout << bs2[i] << " ";
}
cout << endl;
cout << endl;// 创建一个bitset
bitset<8> bs3((long)135);
cout << "bs3 is " << bs3 << endl;// 向左移动4位
bs3 <<= 4;
cout << "now bs3 is " << bs3 << endl;//bitset中被设置成1的位的个数。
cout << bs3.count()<<endl;//反置bitset中所有的位,即将1设为0,0设为1。如果指定pos,那么只有pos上的位被反置。
bs3.flip(1);
cout << "now bs3 is " << bs3 << endl;//重置bitset(全部设为0),如果指定pos,那么只有pos上的位被重置。
bs3.reset(1);
cout << "now bs3 is " << bs3 << endl;//函数设置bitset上所有的位,然后返回bitset。如果指定pos,那么只有pos上的位被设置。
bs3.set(1,1);
cout << "now bs3 is " << bs3 << endl;//返回bitset能容纳的位。
cout << bs3.size() << endl;//函数返回在pos上的位的值
cout << bs3.test(1) << endl;//()函数返回bitset的字符串形式
cout << bs3.to_string() << endl;//返回bitset的无符号长整数形式
//cout << bs3.to_ullong() << endl;
printf("hello...\n");
return 0;
}