C++Primer阅读笔记-第3章-标准库类型 bitset类型
2012-11-18 16:50 kennyMc 阅读(278) 评论(0) 收藏 举报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里是00000110 unsigned 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]; } //输出0101000000000000 system("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]; } //输出1001000000000000 system("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; }
浙公网安备 33010602011771号