bitset类功能记录
来源:互联网 发布:h5微社区源码 编辑:程序博客网 时间:2024/06/06 05:56
一、bitset的定义
类似于vector后面<>中的数据类型,bitset<>括号中记录了长度。
#include <iostream>#include<bitset>#include<string>using namespace std;int main(){//1 bitset<32> i; //初始化一个32位全部为0的数(注意<>内长度必须为1.整形常量 2.已用常量初始化的const对象 ) //i中的位序是从0到31开始//2 unsigned long i; bitset<32> j(i)//用i初始化j//3 string s; bitset<32> k(s);//k是string对象s中含有的位串的副本//4 bitset<32> m(s,pos,n);//m是从位置pos开始的n个位的副本}
二、bitset的初始化
1、用unsigned值初始化
规则:
如果bitset类型长度大于unsigned long值的二进制位数,则其余的高阶位置为0;
如果bitet类型长度小于unsigned long值的二进制位数,则只使用unsigned值中的低阶位,超过bitet类型长度的高阶位将被丢弃。
//例子0xffff在32位机上为 1111 1111 1111 1111 0000 0000 0000 0000bitset<16> a(0xffff); //a为16位全为1,超出部分的0丢弃bitset<32> b(0xffff);//b的0到15位全是1,剩下16到31是0,bitset位数32与unsigned long 长度相同bitset<64> c(0xffff);//bitset为64位大于unsigned long 32, 31到63自动置零
2、用string初始化bitset
规则
从string对象读入位集的顺序是从右向左
string str("1101");bitset<32> a(str); //a中顺序为1011000..00,超出的位全补零string s("111111100000111101010111");bitset<32> b(s,5,4); //从s[5]开始读4位,为1100bitset<32> c(s,s.size()-4); //读后四位(从s[s.size()-4]一直读到结束
三、bitset的操作
bitset<32> a("10010010");a.any();//a中是否有1,返回bool变量,有1为true,全为0返回falsea.none();//a中是否没1,true为全0,false为至少有一个1a.count();//返回a中1的个数a.size();//返回二进制位数int k=a[i];//访问a中i处的位a.set();//将a全置1;a.set(i);//将a中第i位置1;a.reset();//将a全置0;a.reset(i);//将a中第i位置0;a.flip();//全位取反a.flip(i);//i位取反a.to_ulong();//返回a中二进制数的unsigned long数os<<a;//将a输出到os流
附录:
一个例子
#include <iostream>#include<string>#include<stdexcept>#include<bitset>using namespace std;int main(){ bitset<100> a; a.set(); //a.to_ulong(); //在try前的错误操作不会抛出异常 try{ a.to_ulong(); //导致溢出的操作 } catch (exception err){ //处理操作 cout << err.what() << ": 溢出" << endl; } //a.to_ulong();//try后的错误操作会抛出异常 unsigned long k=a.to_ulong();}
阅读全文
0 0
- bitset类功能记录
- bitset类
- BitSet类
- bitset模板类
- C++ bitset 类
- c++ bitset类用法
- bitset类的实现
- Bitset 类小议
- c++ bitset类用法
- Java中的Bitset类
- Java BitSet类
- c++ bitset类用法
- 模板类-bitset
- Bitset类总结
- c++ bitset类用法
- C++ <bitset类用法>
- JAVA中的bitset类
- c++ bitset类用法
- 彩色宝石项链
- 搭建hexo博客(3)
- windows下 Mingw (gcc)编译openssl
- IntelliJ 使用 MyBatis Generator 详解
- 关于MYSQL group by 分组按时间取最大值的实现方法
- bitset类功能记录
- 关于textarea标签在谷歌和火狐可以拖动大小
- 恶意代码分析实战 Lab 1-3 习题笔记
- Android零基础入门第48节:可折叠列表ExpandableListView
- html 中input 框 与文字不能垂直居中, 怎么解决?
- 如何读取JAR包外的properties文件及打成jar包后无法读取到jar包内的properties文件
- jodm解析xml
- easyui更换主题
- Xshell和Xftp链接虚拟机里的Ubuntu失败解决