#edu010. 学习材料 - bitset
学习材料 - bitset
#include<bitset>
bitset
可看作一个多位二进制,每 位占用 个字节,相当于采用了状态压缩的二进制数组,并支持基本的位运算。
在估算程序运行的时间时,我们一般以 位整数的运算次数为基准,因此 位 bitset
执行一次位运算的复杂度可视为 ,效率较高。
声明
bitset < 10000 > s;
表示一个 位二进制数,< > 中填写位数。 下面把位数记为 。
位运算操作符
~s
: 返回对 bitset s
按位取反的结果。
&,|,^
: 返回对每个位数相同的 bitset
执行按位与、或、异或运算的结果。
>>,<<
: 返回把一个 bitset
右移、左移若干位的结果。
==,!=
: 比较两个 bitset
代表的二进制数是否相等。
[ ] 操作符
s[k]
表示 s 的第 k 位,既可以取值,也可以赋值。
在 位二进制数中,最低位为 s[0]
,最高位为 s[9999]
.
count()
s.count()
返回有多少位为 。
any()/none()
若 s 所有位都为 0 ,则 s.any()
返回 false
, s.none()
返回 true
.
若 s 至少一位为 1,则 s.any()
返回 true
, s.none()
返回 false
.
set()/reset()/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
。
学习完毕
{{ select(1) }}
- YES
- NO