C++ bitset类
bitset 模板类由若干个位(bit)组成,它提供一些成员函数,使程序员不必通过位运算就能很方便地访问、修改其中的任意一位。bitset 模板类在头文件 中定义如下:
template <size_t N>
class bitset
{...
};
size_t 可看作 unsigned int。将 bitset 实例化时,N 必须是一个整型常数。例如:
bitset <40> bst;
则 bst 是一个由 40 个位组成的对象,用 bitset 的成员函数可以方便地访问其中任意一位。bitset 中的位从 0 开始编号,第 0 位是最右边的位。
bitset 有许多成员函数,有些成员函数执行的就是类似于位运算的操作。bitset 成员函数列表如下:
bitset <N> & operator &= (const bitset <N> & rhs); //和另一个 bitset 对象进行与操作bitset <N> & operator |= (const bitset <N> & rhs); //和另一个 bitset 对象进行或操作bitset <N> & operator ^= (const bitset <N> & rhs); //和另一个 bitset 对象进行异或操作bitset <N> & operator <<= (size_t num); //左移 num 位bitset <N> & operator >>= (size_t num); //右移 num 位bitset <N> & set(); //将所有位全部设成 1bitset <N> & set(size_t pos, bool val = true); //将第 pos 位设为 valbitset <N> & reset(); //将所有位全部设成0bitset <N> & reset (size_t pos); //将第 pos 位设成 0bitset <N> & flip(); //将所有位翻转(0变成1,1变成0)bitset <N> & flip(size_t pos); //翻转第 pos 位reference operator[] (size_t pos); //返回对第 pos 位的引用bool operator[] (size_t pos) const; //返回第 pos 位的值reference at(size_t pos); //返回对第 pos 位的引用bool at (size_t pos) const; //返回第 pos 位的值unsigned long to_ulong() const; //将对象中的0、1串转换成整数string to_string () const; //将对象中的0、1串转换成字符串size_t count() const; //计算 1 的个数size_t size () const; //返回总位数bool operator == (const bitset <N> & rhs) const;bool operator != (const bitset <N> & rhs) const;bool test(size_t pos) const; //测试第 pos 位是否为 1bool any() const; //判断是否有某位为1bool none() const; //判断是否全部为0bitset <N> operator << (size_t pos) const; //返回左移 pos 位后的结果bitset <N> operator >> (size_t pos) const; //返回右移 pos 位后的结果bitset <N> operator ~ (); //返回取反后的结果bitset <N> operator & (const bitset <N> & rhs) const; //返回和另一个 bitset 对象 rhs 进行与运算的结果bitset <N> operator | (const bitset <N> & rhs) const; //返回和另一个 bitset 对象 rhs 进行或运算的结果bitset <N> operator ^ (const bitset <N> & rhs) const; //返回和另一个 bitset 对象 rhs 进行异或运算的结果
bitset 的用法。
#include <iostream>
#include <bitset>
#include <string>
using namespace std;
int main()
{bitset<7> bst1;bitset<7> bst2;cout << "1) " << bst1 << endl; //输出 1) 0000000bst1.set(0,1);//将第0位变成1,bst1变为 0000001cout << "2) " << bst1 << endl; //输出 2) 0000001bst1 <<= 4; //左移4位,变为 0010000cout << "3) " << bst1 << endl; //输出 3) 0010000bst2.set(2);//第二位设置为1,bst2变成 0000100bst2 |=bst1; // bst2变成 0010100cout << "4) " << bst2 << endl; //输出 4) 0010100cout << "5) " << bst2.to_ulong () << endl; //输出 5) 20bst2.flip(); //每一位都取反,bst2变成 1101011bst1.set(3); //bst1变成 0011000bst2.flip(6); //bst2变成 0101011bitset<7> bst3 = bst2^ bst1;//bst3 变成 0110011cout << "6) " << bst3 << endl; //输出 6) 0110011cout << "7) " << bst3[3] << "," << bst3[4] << endl; //输出 7) 0,1return 0;
}
C++ bitset类相关推荐
- C++ STL bitset类常用函数的使用
bitset创造一个内含位或布尔值且大小固定的数组(array).当需要管理各种标识,并需要以标识的任意组合表现变量时,即可使用bitset模板类. 接下来介绍基本函数的用法: count() ...
- c++ bitset类用法
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值.位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法.标准库提供了bitset类使得处理位集合更容易一些.要使 ...
- java bitset类_Java Bitset类 - Java 教程 - 自强学堂
Java Bitset类 一个Bitset类创建一种特殊类型的数组来保存位值.BitSet中数组大小会随需要增加.这和位向量(vector of bits)比较类似. 这是一个传统的类,但它在Java ...
- JAVA数据结构 之 BitSet 类的使用方法
Java中BitSet的基本用法 JAVA中BitSet就是"位图"数据结构,根据"位图"的语义,数据的存在性可以使用bit位上的1或0来表示:一个bit具有2 ...
- Java BitSet使用场景和示例
一.什么是BitSet? 注:以下内容来自JDK API: BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个boolean值.用非负的整数将BitSet的位编入索引.可以对每个编 ...
- Java.util包中常用的类
Java.util包 Java.util.ArrayDeque类 Java.util.ArrayList类 Java.util.Arrays类 Java.util.BitSet类 Java.util. ...
- java bitset用途_浅谈Java BitSet使用场景和代码示例
搜索热词 @H_502_0@一.什么是BitSet? @H_502_0@ 注:以下内容来自JDK API: @H_502_0@ BitSet类实现了一个按需增长的位向量.位Set的每一个组件都有一个b ...
- C++容器 bitset
C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码. 要使用bitset 类我们必须包含相关的头文件 #include <bitset> bitset除了可 ...
- java bitset用途_BitSet的用法
1,BitSet类 大小可动态改变, 取值为true或false的位集合.用于表示一组布尔标志. 此类实现了一个按需增长的位向量.位 set 的每个组件都有一个 boolean 值.用非负的整数将 B ...
最新文章
- Annu. Rev. Genet:植物微生物组——系统性见解与展望
- GitLab+Jenkins+Ansible
- 利用Gearman,搭建异步分布式计算平台
- python 分布式框架_python分布式框架rq的使用
- 黑科技抢先尝(续2) - Windows terminal中Powershell Tab的美化全攻略
- 计算机网络 哪个教材好,学习计算机网络哪本教材最好?
- 外部集成 网页制作_外部服务的集成测试
- 谷歌开源 Python Fire:可自动生成命令行接口
- 华为摄像头搜索软件_华为Mate 40 Pro评测:硬件和软件表现都近乎完美
- 移动前端页面与Chrome的远程真机调试
- matlab log函数
- 【视频音效素材】火遍全网的2000款热门短视频搞笑剪辑素材+经典音效包素材来了
- 八类网线和七类网线的区别_超6类和7类网线的区别
- 运用系统分析方法,分析校园二手交易平台的可行性
- QT动态加载DLL包括加载DLL中的类及其成员函数
- 微信网页扫码支付(公众号)JAVA实现
- (转自林达华)深入问题本身
- Android 安卓动画 属性动画 - 缩放动画
- 玩qq游戏提示计算机内存不足,为什么电脑运行游戏后提示内存不足
- mel表达式_Maya Mel基础知识教程 了解运用Mel
热门文章
- cef在android中使用_关于富文本在Android中的应用以及遇到的坑
- 福大计算机课程表,教学文件 - 福州大学电气工程与自动化学院
- PP视频如何将默认缓存清晰度设置成超清
- 追加一列 python_常用的python代码总结
- 用自定义注解做点什么——自定义注解有什么用
- linux 文件名带特殊符号,Linux删除含有特殊符号文件名的文件
- 用dl元素编辑html个人信息,html dl dt dd标签元素语法结构与使用
- android系统电视缺点,高清智能电视安卓系统优势与不足解析
- 文字层一点就变红_学习观察神经网络:可视化整个模型训练中卷积层的激活
- 关键词热度分析工具_谷歌SEO推广排名的关键要素(一)利用谷歌关键词分析工具分析关键词...