C++标准库:bitset 用法整理

bitset的用法 阅读详情




 std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子:
#include<bitset>
std::bitset<8> bs;//它是一个模板,传递的参数告诉编译器bs有8个位。


我们接着看上面的代码,通过上面两行的代码我们得到一个bitset的对象bs,bs可以装入8个位,我们可以通过数组的下标运算符来存取:
bs[0]=1;//把第0位设置为1
bs[3]=true;//把第3位设置为1,因为true可以转换为1
bs[7]=0;//这个大家都明白了
bitset被设计为开放的,也就是说一个bitset对象可以转换为其它类型的值,典型的,我们想把一个整数设置成具有特定的位模式,我们可以简单地把一个bitset转换为一个整数:
unsigned long value=bs.to_ulong();
std::bitset<32> bs32(value);
bs32[15]=1;
value=bs32.to_ulong();
此外bitset还可以也字符串互换,这样我们就可以更直观对bitset进行操作了,我只是简单地把我们想要的”01“字符串就可以了:
std::bitset<32> bs("011010101001");
std::string str=bs.to_string();


//=======================================
bitset<n> b;
 b有n位,每位都为0.参数n可以为一个表达式.
如bitset<5> b0;则"b0"为"00000";
 
bitset<n> b(unsigned long u);
 b有n位,并用u赋值;如果u超过n位,则顶端被截除
如:bitset<5>b0(5);则"b0"为"00101";
 
bitset<n> b(string s);
 b是string对象s中含有的位串的副本
string bitval("10011");
bitset<5> b0(bitval4);
则"b0"为"10011";




bitset<n> b(s, pos);
 b是s中从位置pos开始位的副本,前面的多余位自动填充0;
string bitval("01011010");
bitset<10> b0(bitval5, 3);
则"b0" 为 "0000011010";
 
bitset<n> b(s, pos, num);
 b是s中从位置pos开始的num个位的副本,如果num<n,则前面的空位自动填充0;
string bitval("11110011011");
bitset<6> b0(bitval5, 3, 6);
则"b0" 为 "100110";
 
// 流
os << b
 把b中的位集输出到os流
os >>b
输入到b中,如"cin>>b",如果输入的不是0或1的字符,只取该字符前面的二进制位.


// 属性方法
bool any()
 是否存在置为1的二进制位?和none()相反
 
bool none()
是否不存在置为1的二进制位,即全部为0?和any()相反.
 
size_t count()
二进制位为1的个数.
 
size_t size()
 二进制位的个数


flip()
 把所有二进制位逐位取反
 
flip(size_t pos)
 把在pos处的二进制位取反
 
bool operator[](size_type _Pos)
 获取在pos处的二进制位
 
set()
 把所有二进制位都置为1
 
set(pos)
 把在pos处的二进制位置为1
 
reset()
 把所有二进制位都置为0
 
reset(pos)
 把在pos处的二进制位置为0


test(size_t pos)
在pos处的二进制位是否为1?


unsigned long to_ulong()
 用同样的二进制位返回一个unsigned long值


string to_string()
返回对应的字符串.

【RTD】AD7793驱动程序 AD7793完整驱动程序,支持两线、三线、四线RTD。 阅读详情

相关推荐

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

C++ bitset的使用

std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子: #include<bitset> std::bitset<8> bs;//它是一个模板,传递的参数告诉编译器bs有8个位。 我们接着看上面的代码...

weixin_34026276的博客 841

Keil5编译报错:ARM Compiler Version 5缺失的完整解决方案

本文提供了Keil5编译报错“ARM Compiler Version 5缺失”的完整解决方案。详细介绍了手动安装ARM Compiler Version 5的步骤,包括下载安装包、配置编译器路径及常见问题排查,帮助开发者快速恢复老项目的编译环境。

bb456的博客 944

【c++STL——第十讲】bit set系列 (常用知识点总结)

大家好,我是quicklysleep,欢迎大家光临我的博客,算法学习笔记系列持续更新中~ 文章目录一、前言二、bit set的定义三、bit set的基本运算四、bit set的常用函数五、bit set的作用最后 一、前言 在 C++ 中,严格来说,bitset并不属于stl容器的范畴,它也不支持指示器的操作。bitset提供了对数据的位操作。 bit set 压位 即如其名,bit set储存的是二进制。 它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间,用于节省

m0_63233163的博客 1710

【vLLM-性能洞察】基于Ascend Profiler的端到端推理瓶颈定位与优化实践

本文详细介绍了如何利用Ascend Profiler对vLLM-Ascend大模型推理服务进行端到端的性能瓶颈定位与优化。通过实战案例,阐述了从数据采集、可视化分析到诊断低效算子、内存管理、计算通信重叠及框架调度等常见瓶颈的全过程,为基于昇腾NPU的AI推理性能调优提供了系统性的方法论和实用工具指南。

cc789的博客 518

各种加法器的比对分析与Verilog实现(3)

了Kogge-Stone加法器和brent-kung加法器,本文将用Verilog代码进行实现。

Albert_yeager的博客 1197

C语言经典算法(五)——求位设置的两种方法

今后继续整理算法并写出自己的理解和备注。 C++实现的:位设置(bit_set)1、 位设置(bit_set) <1> 题目描述: 对一个unsigned char 8 bit数据的指定位置0或置1操作,并保持其他位不变。 函数原型:void bit_set(unsigned char *p_data, unsigned char position, bool flag);

zxh1592000的博客 1509

域自适应的理解与想法(Domain Adaptation)

这幅图是域适应非常有名的一篇论文中的插图,被很多文章转载。 什么是领域自适应? Domain Adaptation是迁移学习中很重要的一部分内容,目的是把分布不同的源域和目标域的数据,映射到一个特征空间中,使其在该空间中的距离尽可能近。于是在特征空间中对source domain训练的目标函数,就可以迁移到target domain上,提高target domain上的准确率。 上面的图主要的思想来源于GAN,上图由三部分组成:特征映射网络 标签分类网络和和域判别网络 其中,source domain的数.

yuanxue18的博客 5981

bit_set(位图)

位图: 位图就是bitset的缩写。所谓bitset,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来快速判断某个数是否存在。在STL中有一个bitset容器,其实就是位图法。 位图法的优点: 1.时间复杂度为O(1),可以快速判断数据是否存在。 2.适用于处理大数据问题,节省空间。 位图法的缺点: 1.可读性差,每个bit只能存放1

景初浅行 1927

S32K3的STCU2模块详解:从硬件FSM到MCAL配置,搞懂BIST在线测试全流程

本文深入解析S32K3系列MCU的STCU2模块,从硬件FSM架构到MCAL配置,详细讲解BIST在线测试全流程。通过分区的安全策略和实战代码示例,帮助开发者掌握汽车电子系统中的功能安全实现,提升系统可靠性和安全性。

weixin_42525328的博客 444

Kylin系统离线环境下的dpkg依赖包高效部署指南

本文详细介绍了在Kylin系统离线环境下高效部署dpkg依赖包的完整方案,包括预下载依赖包、构建本地APT仓库以及高级故障排查技巧。通过实战经验和优化建议,帮助用户解决依赖地狱问题,提升部署效率,特别适用于银河麒麟V10等内网环境。

weixin_29051245的博客 384

C++标准库:bitset 用法整理&&zoj 3812

转载:  std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子: #include std::bitset bs;//它是一个模板,传递的参数告诉编译器bs有8个位。 我们接着看上面的代码,通过上面两

晴朗的博客 646

基于OpenCV的围棋终局识别与胜负判定系统实现

计算机视觉是人工智能领域的关键技术,它使计算机能够从数字图像或视频中获取、处理和分析信息。其核心原理在于通过图像处理算法提取特征,并基于这些特征进行识别、分类和测量。在工程实践中,计算机视觉技术为自动化、智能化应用提供了强大支持,广泛应用于工业检测、自动驾驶、医疗影像分析等领域。本文聚焦于一个具体的应用场景:利用OpenCV库实现围棋终局识别。通过图像预处理、棋盘检测与透视校正、交叉点定位等步骤,结合围棋规则逻辑,构建了一套从棋盘图像自动判定胜负的解决方案。该方案涉及自适应二值化、霍夫变换、连通域分析等关键

weixin_29100927的博客 279

C++标准库:bitset 用法整理 (来自网易 happyboy200032的博客)

std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子: #include std::bitset bs;//它是一个模板,传递的参数告诉编译器bs有8个位。 我们接着看上面的代码,通过上面两行的代码我们得到

Physics_ITBoy的专栏 599

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++标准库:bitset 用法整理 std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特

 std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子:#include&lt;bitset&gt;std::bitset&lt;8&gt; bs;//它是一个模板,传递的参数告诉编译器bs有8个位。我们接着看上面的代码,通过上面两行的...

bianhuanjia的博客 886

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

bitset 用法整理

在项目中需要使用到10进制48位的数字按二进制由高到低解释,然后按每一位是0还是1来判断报警或错误状态。 所以,在Linux中的C++下需要用到二进制转换以及按位解析。收集到了一些资料,自己保存一下啊。   如下: bitset 用法整理 构造函数 bitset b; b有n位,每位都为0.参数n可以为一个表达式. 如bitset b0;则"b0"为"00000";

eecrazy的专栏 2万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++ bitset用法整理

一、bitset 头文件 C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。 二、bitset常用构造函数 1、bitset&lt;n&gt; b;       b有n位,每位都为0;参数n可以为一个表达式;       如bitset&lt;5&gt; b0;则"b0"为"00000";   2、bitset&...

qq_42322414的博客 778

C++ STL bitset 用法整理

std::bitset是STL的一部分,准确地说,std::bitset是一个模板类,它的模板参数不是类型,而整形的数值(这一特性是ISO C++2003的新特性),有了它我们可以像使用数组一样使用位。下面看一个例子: #include std::bitset bs;//它是一个模板,传递的参数告诉编译器bs有8个位。 我们接着看上面的代码,通过上面两行的代码我们得到

mojolang 1万+

标准库——bitset类型

关于标准库中sring、vector、set、map、queue、stack 、bitset等,方法有些记不清楚,每次用每次查,很费时间,干脆自己整理一下,记不住的时候,查询更方便。 // 需要包含头文件和声明: #include<bitset> using std::bitset; bitset对象的定义和初始化 bitset类型对象的区别仅在其长度,而不在其类型。定义时,&...

优快云的博客 521
上一篇: hihoCoder 1044 状态压缩·一
下一篇: hihoCoder 1048 状态压缩·二
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值