《C++ Primer》笔记-处理0,1字符操作标准库 bitset
2012-12-27 17:48
239 查看
原来C++中还有专门处理0,1操作的库类 bitset(从字面上解释,比特集合,集合貌似不贴切。) 1.bitset 是处理二进制位的有序集 ,每个位读只能是0或1.
#include <bitset> using std::bitset; 2.bitset 对象的定义和初始化
bitset<32> bitvec; // 32 bits, all zero 在 32 位 unsigned long 的机器上,十六进制值 0xffff 表示为二进制位 就是十六个 1 和十六个 0(每个 0xf 可表示为 1111)。可以用 0xffff 初始 化 bitset 对象// bitvec1 is smaller than the initializerbitset<16> bitvec1(0xffff); // bits 0 ... 15 are set to 1// bitvec2 same size as initializerbitset<32> bitvec2(0xffff); // bits 0 ... 15 are set to 1;16 ... 31 are 0// on a 32-bit machine, bits 0 to 31 initialized from 0xffffbitset<128> bitvec3(0xffff); // bits 32 through 127 initialized to zero用 string 对象初始化 bitset 对象当用 string 对象初始化 bitset 对象时,string 对象直接表示为位模式。从 string 对象读入位集的顺序是从右向左(from right to left):
string strval("1100"); bitset<32> bitvec4(strval);
bitvec4 的位模式中第 2 和 3 的位置为 1,其余位置都为 0。如果 string 对 象的字符个数小于 bitset 类型的长度,则高阶位置为 0。当用 string 对象初始化 bitset 对象时,记住这一差别很重要。不一定要把整个 string 对象都作为 bitset 对象的初始值。相反,可以只 用某个子串作为初始值:string str("1111111000000011001101");bitset<32> bitvec5(str, 5, 4); // 4 bits starting at str[5], 1100bitset<32> bitvec6(str, str.size() - 4); // use last 4 characters
表 3.7. 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 中所有二进制位都置为 1 |
b.set(pos) | 把 b 中在 pos 处的二进制位置为 1 |
表 3.7. bitset 操作 | |
b.any() | b 中是否存在置为 1 的二进制位? |
b.reset() | 把 b 中所有二进制位都置为 0 |
b.reset(pos) | 把 b 中在 pos 处的二进制位置为 0 |
b.flip() | 把 b 中所有二进制位逐位取反 |
b.flip(pos) | 把 b 中在 pos 处的二进制位取反 |
b.to_ulong() | 用 b 中同样的二进制位返回一个 unsigned long 值 |
os << b | 把 b 中的位集输出到 os 流 |
相关文章推荐
- C++ Primer 学习笔记(2): bitset操作
- [C++ 学习] C++ Primer 笔记 bitset 和 位操作
- 20171021学习笔记Selenium 2第四章WebDriver API 4.11警告处理4.14操作Cookie
- 字符设备之笔记-中断处理
- svn学习笔记(2)操作----还原,重命名,冲突处理,权限配置等
- jQuery学习笔记 操作jQuery对象 文档处理
- Python 读取键盘输入字符,多线程操作,文件操作随机处理 开发范例
- C++学习笔记 string 中处理字符的方法
- 【C++ Primer】【学习笔记】【第三章】标准库类型之:bitset类型
- 数学函数、字符处理函数、字符串和内存操作函数
- C#数据库操作特殊字符单引号三种处理方式
- C++ Primer复习和学习笔记 第三章 标准库类型
- 一个非常非常非常基础的程序,写的不好,但是一般的文件读写操作及字符处理函数都涉及到了..新手学习用的
- Java 文件操作及字符流处理
- 黑马程序员——7.1.IO(其他对象API(System类、Runtime类、Math类、Date类)字节流与字符流、IO异常处理、缓冲区、键盘录入、转换流、异常日志、流的操作总结)
- jQuery学习笔记 操作jQuery对象 CSS处理
- <NET CLR via c# 第4版>笔记 第14章 字符,字符串和文本处理
- Java字节流和字符流的区别 (方法区别 操作基本单元区别 操作方式区别 处理数据类型区别) 之个人总结
- 41、C++ Primer 4th笔记,IO库,格式化IO操作