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

posted @ 2024-02-01 21:14  Go1NgZCY  阅读(32)  评论(0)    收藏  举报