bitset
Posted qifeng1024
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bitset相关的知识,希望对你有一定的参考价值。
bitset类 有些类似bool数组
全部有1 和 0组成的一个字符数组
首先引入头文件
#include <bitset>
定义一个bitset类对象
bitset<4> bit_val;
意思是定义一个bitset对象,名字叫 bit_val ,长度为4,目前没有赋值 ,也就是 这个值是 0000
bitset<4> bit_val(7);
赋初值为7 ,我们知道 7 的二进制表示为 0111,所以 bit_cal 的值是 0111,也可以写16进制 比如 0x07
当然了也可以直接给0111
string str("111"); bitset<4> bit_val(str);
位运算
<< >> | & ~ 都可以用在bitset类上
随便用几个试试:
int main() { bitset<8> val_bit(string("10111011")); cout<<val_bit<<endl; cout<<(~val_bit)<<endl; cout<<(val_bit<<3)<<endl; cout<<(val_bit>>3)<<endl; }
输出结果
10111011 01000100 11011000 00010111
复制过来bitset的成员函数
对于一个叫做bit的bitset: bit.size() 返回大小(位数) bit.count() 返回1的个数 bit.any() 返回是否有1 bit.none() 返回是否没有1 bit.set() 全都变成1 bit.set(p) 将第p + 1位变成1(bitset是从第0位开始的!) bit.set(p, x) 将第p + 1位变成x bit.reset() 全都变成0 bit.reset(p) 将第p + 1位变成0 bit.flip() 全都取反 bit.flip(p) 将第p + 1位取反 bit.to_ulong() 返回它转换为unsigned long的结果,如果超出范围则报错 bit.to_ullong() 返回它转换为unsigned long long的结果,如果超出范围则报错 bit.to_string() 返回它转换为string的结果
也可以到这个网站上查看
http://www.cplusplus.com/reference/bitset/bitset/
以上是关于bitset的主要内容,如果未能解决你的问题,请参考以下文章