bitset
bitset基本用法
一、概念
bitset 可以说是一个多位二进制数,每八位占用一个字节,因为支持基本的位运算,所以可用于状态压缩,n 位 bitset 执行一次位运算的时间复杂度可视为 n / 32.
二、基本操作

1.定义:
bitset< n > s;
表示一个n位的二进制数,< >中填写位数;
2.位运算操作符:
~s: 返回对 s 每一位取反后的结果;
&,|,^:返回对两个位数相同的bitset执行按位与、或、异或运算的结果;
<<, >>:返回把一个bitset左移,右移若干位的结果.(补零);
==,!=:比较两个位数相同的bitset代表的二进制数是否相等;
3.[ ]操作符:
s[k]:表示s的第k位,即可取值也可赋值,编号从0开始;
4.count:
s.count():返回二进制串中有多少个 1;
5.any/none
若 s 所有位都为 0,则s.any()返回false,s.none()返回true;
若 s 至少有一位为 1,则s.any()返回true,s.none()返回false;
6.set/rest/flip
s.set()把 s 所有位变为 1;
s.set(k,v)把 s 的第 k 位改为 v,即s[k] = v;
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;

浙公网安备 33010602011771号