C++STL之bitset

#include <bitset>
bitset 可看作一个多位二进制数,每八位占一个字节,相当于采用了状态压缩的二进制数组,并支持基本的位运算。
估算程序运行的时间时,一般采用32位整数的运算次数为基准,因此n位bitset执行一次位运算的复杂度可视为n/32。

声明
bitset s;
表示N位二进制数,<>中填写位数。
可以进行的基本位运算
~s :按位取反。
&,|,^:按位与,或,异或运算。
>>,<< :把一个bitset右移,左移若干位。
==,!=:比较两个bitset代表的二进制是否相等。
[]操作符
s[k] 表示s的第k位, 可以取值,赋值。
count
s.count() 返回有多少位1。
any/none
若s的所有位都为0,则s.any()返回fasle, 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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值