#include<bitset>

来源:互联网 发布:mac鼠标能点右键吗 编辑:程序博客网 时间:2024/06/05 20:07

头文件:#include<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
b.reset( ) 把b中所有二进制位都置为0
b.reset( pos ) 把b中在pos处的二进制位置置为0
b.flip( ) 把b中所有二进制位逐位取反
b.flip( pos ) 把b中在pos处的二进制位取反
b.to_ulong( ) 把b中同样的二进制位返回一个unsigned
os << b 把b中的位集输出到os流



参考资料:《C++ Primer》

MSDN:http://msdn.microsoft.com/zh-cn/library/zfae7kt8.aspx

  1. #include <iostream>  
  2. #include <string>  
  3. #include <bitset>  
  4. using namespace std;  
  5. int main()  
  6. {  
  7.     string str = "10011";  
  8.     bitset<9>bitvec(str);// 0,1,4为置1,其余为0  
  9.   
  10.     string str2 = "Hello,world";  
  11.     //bitset<500>b2(str2); //error  
  12.   
  13.     size_t bits_set = bitvec.size();  
  14.     cout << "bitvec.size()" << bits_set << endl;  
  15.     cout << bitvec << endl; //可以直接输出  
  16.     cout << "ulong = " <<bitvec.to_ulong() <<endl << endl;  
  17.   
  18.     bitvec.flip();  
  19.     bits_set = bitvec.size();  
  20.     cout << "bitvec.size()" << bits_set << endl;  
  21.     cout << bitvec << endl;  
  22.     cout << "ulong = " <<bitvec.to_ulong() <<endl << endl;  
  23.   
  24.     bitvec.reset();  
  25.     bits_set = bitvec.size();  
  26.     cout << "bitvec.size()" << bits_set << endl;  
  27.     cout << bitvec << endl;  
  28.     cout << "ulong = " <<bitvec.to_ulong() <<endl << endl;  
  29.     return 0;  
  30. }  

执行结果如下所示:

bitvec.size()9
000010011
ulong = 19


bitvec.size()9
111101100
ulong = 492


bitvec.size()9
000000000
ulong = 0


请按任意键继续. . .


0 0