C转C++速成浅入浅出系列——STL之bitset
本系列为应付考研复试用,知识浅入浅出,很多地方不深究细节原理;如有谬误,欢迎大家指出。
bitset
【bitset:位集,比特集】
理解为比特集。特点是 ①只能存入0与1 ②小端存储(可参阅计算机组成原理知识,表现为按b[i]增序输出时会倒序输出)
需提供头文件#include <bitset>
创建
注:
①存储时按照小端存储方式
②按unsigned int格式转换存入时,如过大溢出则会保留低位(如62则会保留低5位,即11110,30)
③按字符串格式存入时,如溢出则会对字符串剩余部分进行截断
1 string s = "1010"; 2 bitset <5> b1; //默认为全0 3 bitset <5> b2(10); //将unsigned int值转换为二进制数,再进行存储 4 bitset <5> b3(s); //将字符串读入低位,高位不足时会补充0 5 bitset <5> b4(s,2,2); //从字符串s的s[2]开始,读入2个比特值
设1
使用.set(下标)方法将指定位置设置为1。
b.set(2);
归0
使用.reset(下标)方法将指定位置设置为0。若不填写下标,将整个bitset全部归0。
b.reset(2); b.reset();
取反
使用.flip(下标)方法将指定位置进行取反。若不填写下标,将真个bitset全部进行取反。
b.flip(2); b.flip();
测试
使用.test(下标)方法对指定位置进行测试,查验是否为1。是则返回1,否则返回0。
b.test(2);
验1
使用.any()方法和.none()方法验证整个bitset中是否存在1。二者正好相反。
对于.any()方法,若存在1返回1,否则返回0。
对于.none()方法,若不存在1返回1,否则返回0。
b.none();
获取1个数
使用.count()方法统计bitset中的1的个数。
cout << b.count();
获取长度
使用.size()方法获取整个bitset的长度。
cout << b.size();
转unsigned long
使用.to_ulong()方法进行数据类型的转换。(但是没有类似的.to_uint()方法)
unsigned long l = b.to_ulong(); cout << l;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话