------ 用法概括
· 实质:bitset 可看作一个多位二进制数,相当于采用了 状态压缩的二进制数,支持所有位运算操作符
· 声明:bitset<10000> s;
表示10000位二进制数,<>中间填写位数
------ 指令概括
[ ] 操作符
- s[k]:表示 s 的第 k 位,可以取值,可以赋值。同普通数组一样,是 “前闭后开” 的形式
count
- s.count():返回 s 中有多少位 1
any/none
- s.any():若 s 中至少一位为 1,返回 true,否则返回 false
- s.none():若 s 所以位都为 0,返回 true,否则返回 false
set/reset/flip
- s.set():把 s 所有位改为 1
- s.set(k,x):把 s 的第 k 位改为 x,即 s[k]=x
- s.reset():把 s 所有位改为 0
- s.reset(k):把 s 的第 k 位改为 0,即 s[k]=0
- s.flip():把 s 所有位取反,即 s=~s
- s.flip(k) 把 s 的第 k 位取反,即 s[k]^=1
------ 示例
bitset 的赋值与输出
string a="1000"; // a也可以为 char类型或 int类型
bitset<4> s(a); //用括号赋值,不支持等号
int main() {
cout<<s[3]<<endl; // []操作符返回 string类型,因此只能使用 cout输出
cout<<s<<endl;
printf("%d",s); //以 int类型输出,因此转换为十进制
return 0;
}
输出结果:
1
1000
8