C++Primer阅读笔记-第3章-标准库类型 bitset类型
bitset类型是用来处理位集的,属于标准库。
bitset位置编号是从0开始的,假如bitset是32位的,那么从0到31就是从低阶位到高阶位,类似于寄存
器。
1.用unsigned值初始化bitset对象
#include<iostream> #include<bitset> using std::cout; using std::endl; using std::cin; using std::bitset;int main() {//这里6的2进制是00000000 00000110,从高位到低位//假如i被存储到AX寄存器里,那么AH里就是00000000,AL里是00000110unsigned int i=6; bitset<16> bit(i);for(int i=0;i<bit.size();i++){cout<<bit[i];}//输出0110000000000000,因为bitset中索引0是指向最低位的 system("pause");return 0; }
2.用string对象初始化bitset对象
字符串这里只能用二进制格式的字符串来初始化bitset,否则报错
#include <iostream> #include <bitset> using std::cin; using std::cout; using std::endl; using std::bitset;int main() {bitset<16> bit("1010");for(int i=0;i<bit.size();i++){cout<<bit[i];}//输出0101000000000000system("PAUSE");return 0; }
把string对象的某个字符串作为初始值
#include <iostream> #include <string> #include <bitset> using std::cin; using std::cout; using std::endl; using std::bitset; using std::string;int main() {string str("101001");//这里从str的下标2开始,截取4个字符作为初始值bitset<16> bit(str,2,4);for(int i=0;i<bit.size();i++){cout<<bit[i];}//输出1001000000000000system("PAUSE");return 0; }
3.bitset对象上的操作
#include <iostream> #include <string> #include <bitset> using std::cin; using std::cout; using std::endl; using std::bitset; using std::string;int main() {string str("101001");bitset<16> bit(str);cout<<"是否存在为1的二进制位:"<<bit.any()<<endl;cout<<"不存在为1的二进制位:"<<bit.none()<<endl;cout<<"bitset中1的个数:"<<bit.count()<<endl;cout<<"bitset在下标2处是否为1:"<<bit.test(0)<<endl;//其他的一些常用操作//bit.set() 把bit中所有二进制位都设置为1//bit.set(pos) 把bit中pos处的二进制位都设置为1//bit.reset() 把bit中所有二进制位都设置为0//bit.reset(pos) 把bit中pos处的二进制位都设置为0//bit.flip() 把bit中所有二进制位取反//bit.flip(pos) 把bit中pos处的二进制位取反//bit.to_ulong 返回一个unsigned long值system("PAUSE");return 0; }