bitset<8>bitset1;//无参构造,长度为8,默认每一位为0bitset<8>bitset2(10);//长度为8,二进制保存,前面用0补充string..." />
当前位置: 代码迷 >> 综合 >> bitset 函数
  详细解决方案

bitset 函数

热度:67   发布时间:2023-11-01 21:01:39.0

bitset

  • 功能:将对象转换成二进制保存
  • 所需头文件: <bitset>
    bitset<8> bitset1;      //无参构造,长度为8,默认每一位为0bitset<8> bitset2(10);  //长度为8,二进制保存,前面用0补充string str("110101");bitset<16> bitset3(str);  //长度为16,二进制保存,前面用0补充char c[] = "110101";bitset<16> bitset4(c);    //长度为16,二进制保存,前面用0补充

 

函数

函数 功能描述
count() 值为1的位数
size() 位长
test(pos) 测试pos处的二进制位是否为1,与0做或运算
any() 是否存在值为1
none() 是否不存在值为1
all() 是否值全为1
set(pos) pos位处的二进制位置为1,与1做或运算
reset() 全部置为0
flip() 全部位逐位取反,即所有的1变为0,0变为1
flip(pos) pos处的值取反
to_ulong() 将二进制转换为unsigned long输出
to_string() 将二进制转换为字符串输出
~bitset 按位取反,与flip()一样
os << bitset 将二进制位输出到os流,小值在右,大值在左

例1

 当转化的位数有8位,即bieset<8>,而要转化的有9位,那么最低位删除了

    bitset<8> func("110011001");cout << func << endl;      // 转化的位数有8位,而要转化的有9位,最低位删除了

 

 例2

	bitset<8> func("11001100");cout << "11001100" << endl;cout << "func.count(): " << func.count() << endl;    // count函数用来求bitset中1的位数cout << "func.size(): " << func.size() << endl;     // size函数用来求bitset的大小cout << "func.test(0): " << func.test(0) << endl;    // test函数用来查下标处的元素是0还是1,并返回false或truecout << "func.test(2): " << func.test(2) << endl;	 // cout << "func.any(): " << func.any() << endl;		 // any函数检查bitset中是否有1cout << "func.none(): " << func.none() << endl;	     // none函数检查bitset中是否没有1cout << "func.all(): " << func.all() << endl;		 // all函数检查bitset中是全部为1

 

  例3

    bitset<8> func1("11001100");cout << "11001100" << endl;cout << "flip(): " << func1.flip() << endl;bitset<8> func2("11001100");cout << "flip(0): " << func2.flip(0) << endl;

 

例4 

	bitset<8> func("11001100");unsigned long num1 = func.to_ulong();   // 将bitset转换成unsigned long类型unsigned long num2 = func.to_ullong();  // 将bitset转换成unsigned long long类型string str = func.to_string();          // 将bitset转换成string类型cout << "11001100" << endl;cout << "to_ulong(): " << num1 << endl;cout << "to_ullong(): " << num2 << endl;