【笔记】C++库函数——bitset

2023-11-15

【笔记】C++库函数——bitset

看到有大佬掏出这个库函数,一愣。这绝对是未曾想象过的道路,长见识。有时候做题总能碰见稀奇古怪的库函数,每个都令我大开眼界。以后看到感兴趣的都会记录一下,感觉是个好东西,算是学习道路上的小小积累吧,抓紧记录一下。

头文件

#include <bitset>
using std::bitset;

定义与初始化

bitset<n> b;			//b有n位,每位都是0
bitset<n> b(u);			//b是unsigned long型u中的一个副本
bitset<n> b(s);			//b是string对象s中含有位串的副本
bitset<n> b(s,pos,n);	//b是s中从pos位置开始的n个位的副本

类似于vector,bitset类是一种类模板;与vector不一样的是bitset类型对象的区别仅在其长度而不在其类型。在定义bitset时,要明确bitset含有多少位,须在尖括号内给出它的长度值

bitset操作

b.any() b中是否存在置为1的二进制位?
b.none() b中不存在置为1的二进制位?
b.count() b中置为1的二进制个数
b.size() b中二进制位的个数
b[pos] 访问b中在pos处的二进制位
b.test(pos) b中在pos处的二进制位是否为1?
b.set()/b.set( p ) 把b中二进制位都置1/将第p+1位置1
b.reset()/b.reset( p ) 把b中二进制位都置0/将第p+1位置0
b.flip() 把b中的位数都取反
b.to_ulong() 把b中同样的二进制位返回一个unsigned_long值,如果超出范围会报错

此外,bitset运算也像普通整数一样,可以进行与、或、异或、左移、右移等操作。

#include <iostream>
#include <string>
#include <bitset>

int main ()
{
  std::bitset<4> foo (std::string("1001"));
  std::bitset<4> bar (std::string("0011"));

  std::cout << (foo^=bar) << '\n';       // 1010 (XOR,assign)
  std::cout << (foo&=bar) << '\n';       // 0010 (AND,assign)
  std::cout << (foo|=bar) << '\n';       // 0011 (OR,assign)

  std::cout << (foo<<=2) << '\n';        // 1100 (SHL,assign)
  std::cout << (foo>>=1) << '\n';        // 0110 (SHR,assign)

  std::cout << (~bar) << '\n';           // 1100 (NOT)
  std::cout << (bar<<1) << '\n';         // 0110 (SHL)
  std::cout << (bar>>1) << '\n';         // 0001 (SHR)

  std::cout << (foo==bar) << '\n';       // false (0110==0011)
  std::cout << (foo!=bar) << '\n';       // true  (0110!=0011)

  std::cout << (foo&bar) << '\n';        // 0010
  std::cout << (foo|bar) << '\n';        // 0111
  std::cout << (foo^bar) << '\n';        // 0101

  return 0;
}

参考胡小兔的博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【笔记】C++库函数——bitset 的相关文章

随机推荐

  • 【计算机视觉

    文章目录 一 前言 二 试玩效果 三 研究背景 四 模型结构 五 Pre training objectives 六 CapFilt架构 七 Experiment 八 结论 一 前言 今天我们要介绍的论文是 BLIP 论文全名为 Boots
  • live555 实现一个最简单的RTSP服务器

    用live555中的库写了一个最简单的RTSPServer程序 仅用于学习目的 从下例的代码中 可以清析的明白RTSPServer的函数调用流程 cpp view plaincopyprint include
  • 人工智能期末复习

    1 人工智能 内涵和外延 英文 Artificial Intelligence 定义 能力方面 人工智能就是用人工的方法在机器 计算机 上实现的智能 或称机器智能 学科方面 是一门研究如何构造智能机器或智能系统 以模拟 延申和扩展人类智能的
  • 微信JSAPI支付v3流程(uniapp和node版)

    一 微信JSAPI支付 请提前准备好接入前的准备文档获取相关的配置数据 否则下面需要的数据你可能会比较懵 并且需要提前了解微信JSAPI支付文档 二 获取用户openid 获取openid方法例子 三 h5调起支付 1 第一种通过Weixi
  • springboot yml 配置文件注入Map,List

    文章转自 https blog csdn net sdzhangshulong article details 80124900 person lastName hello age 18 boss false birth 2017 12 1
  • C语言学习之extern关键字

    1 了解extern 1 extern是C语言的一个关键字 可以用来修饰函数与变量 2 当extern修饰一个变量或函数时时 就是在声明这个变量 函数 告诉编译器在外部文件中已经这个变量 函数 要通过编译 2 extern的用法 1 在一个
  • 使用java实现word转pdf,亲测有效,完美保留样式

    网上了很多方法 要么转换速度慢 要么转换出来的格式不一样 遇到了各种问题 无法完美完成转换 在stackoverflow发现完美答案 依赖
  • 网易严选滑块

    疫情分控在家 哎 难搞哦 大表哥们 虽然是网易一家的滑块 就当无聊分享一下 说明一下 有些id用官方的那套可能过不去 文章末尾分享一个ast解混淆的js 大家可以拿去用过用 之前的文章有写过网易的 也是简单介绍了一下 严选滑块 先看看b d
  • webpack系列 —— 性能优化篇

    一 压缩图片和css 压缩图片 image webpack loader 来压缩图片文件 image webpack loader 使用 imagemin 来进行压缩 use file loader 需要在file loader之后添加 i
  • Linux 下wifi 驱动开发(三)—— SDIO接口WiFi驱动浅析

    SDIO Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块 内置无线网络协议IEEE802 11协议栈以及TCP IP协议栈 能够实现用户主平台数据通过SDIO口到无线网络之间的转换 SDIO具有传输数据快 兼容SD M
  • Jupyter Notebook 更改默认存储路径、更改默认浏览器、添加虚拟环境的kernel

    文章目录 1 更改默认存储路径 1 1 修改配置文件 1 2 修改快捷方式 2 更改默认浏览器 3 添加虚拟环境的kernel 1 更改默认存储路径 1 1 修改配置文件 Jupyter Notebook 的默认存储路径是 C Users
  • 计算机二级12月报名时间广东,18年广东省全国计算机等级考试报名:12月15日起...

    全国计算机等级考试 National Computer Rank Examination 简称NCRE 是由教育部考试中心主办 面向社会 用于考查应试人员计算机应用知识和能力的全国性计算机水平考试体系 一 考试时间及考试体系 一 考试时间
  • 【C语言】自动售货机

    题目 假设一种自动售货机可以为顾客提供 3 种价格档次的不同饮料 投入2元钱 可选择康师傅矿泉水 怡宝矿泉水和农夫山泉之一 投入 3 元钱 可选择可乐 雪碧和果汁之一 投入 5 元钱 可选择奶茶 咖啡和酸奶之一 编写程序 模拟用户向自动售货
  • hcl在服务器上保存文件,HCL File Extension - What is .hcl and how to open? - ReviverSoft

    You re here because you have a file that has a file extension ending in hcl Files with the file extension hcl can only b
  • @Mapper注解中如何使用Mybatis的<if>标签

    以 Update为例子
  • 图像分类、目标检测、图像分割区别

    1 图像分类 图像分类主要是基于图像的内容对图像进行标记 通常会有一组固定的标签 而你的模型必须预测出最适合图像的标签 这个问题对于机器来说相当困难的 因为它看到的只是图像中的一组数字流 上图片来自于Google Images 而且 世界各
  • jquery的$().each,$.each的区别

    在jquery中 遍历对象和数组 经常会用到 each和 each 两个方法 两个方法是有区别的 从而这两个方法在针对不同的操作上 显示了各自的特点 each 对于这个方法 在dom处理上面用的较多 如果页面有多个input标签类型为che
  • 图机器学习课程笔记6

    维生素C吃多了会上火 个人CSDN博文目录 cs224w 图机器学习 2021冬季课程学习笔记集合 目录 1 思维大纲 2 中文笔记 1 思维大纲 2 中文笔记
  • 面试经典(19)--求二叉树中节点的最大距离

    题目描述 写一个程序求二叉树中相距最远的两个节点之间的距离 图3 11 A和B即为所求距离最远的两个节点 我们先作图 看能否找到规律 我们可以看到 所求的两个节点可能经过二叉树的根结点 也可能不经过二叉树的根结点 每个节点维护左右子树最大距
  • 【笔记】C++库函数——bitset

    笔记 C 库函数 bitset 看到有大佬掏出这个库函数 一愣 这绝对是未曾想象过的道路 长见识 有时候做题总能碰见稀奇古怪的库函数 每个都令我大开眼界 以后看到感兴趣的都会记录一下 感觉是个好东西 算是学习道路上的小小积累吧 抓紧记录一下