使用bitset的定义
使用bitset定义二进制变量有5种方法
1、直接定义,每一位初始为0,bitset<N> name; // 定义长度为 N 的二进制数组,命名为 name
bitset<6> a; //定义二进制长度6的数
2.bitset<N> name(num); // 定义长度为 N 的二进制数组,命名为 name,值为num
bitset<6> a(32); //二进制长度6,将32转化为二进制存到其中。
cout << a << endl;
3.bitset<N> name = num; // 定义长度为 N 的二进制数组,命名为 name,值为num
bitset<6> a = 32; //二进制长度6,将32转化为二进制存到其中。
cout << a << endl;
4.将 01字符数组存到二进制变量中
char ch[6] = "100000";
bitset<6> a(ch);
cout << a << endl;
5.将 01字符串存到二进制变量中
string s = "100000";
bitset<8> a(s);
cout << a << endl;
注意:长度不够前补 0,长度过长截断
比如bitset<5> a = 35(35=0b100011),若cout<<a;a会输出为00011。
bitset的二进制字符串的遍历
bitset<6> a(32);
cout << a <<endl; //000001
for(int i=0;i<7;i++) cout<<a[i]; //000001从最低位输出
二进制值的运算
a |= b; //两个二进制数取或操作;
a &= b; //两个二进制数取与操作;
a ^= b; //取异或;
a = ~a; //取反;
a <<= 2; //左移右移;//eg:a=1000,b=0101
//a&=b -> a=0000
//a|=b -> a=1101
//a^=b -> a=1101
//~a -> a=0111
//a<<=1 -> a=10000
一些方便的自带函数
int num = b2.count(); //查询二进制数组中,1的个数;
int len = b2.size(); //二进制数组的长度,就是定义的长度;
int test = b2.test(7); //判断第x个位置是0还是1,也就是输出第x个位置,注意逆序;b2.flip(); //将二进制每一位取反;
b2.flip(3); //将二进制第x位取反;
b2.set(); //将二进制每一位置为1; reset置为0;
b2.set(3); //将第x个位置置为1;
string ss = b2.to_string(); //将二进制数组转化为字符串。