一、 声明:
bitset<N> f; // N是二进制长度,这时每一位都是0
- 存储数字的二进制:
bitsetname(num); // 定义长度为 N 的二进制数组,命名为 name,将数字 num 的二进制存到其中;
bitset<8> f(12) // 二进制长度为8, 将12转换为二进制存入其中
- 存储 01字符串 对应的二进制:
bitsetname(string); // 定义长度为 N 的二进制数组,命名为 name,将01串 string 存到其中,长度不够前补 0,长度过长截断;
string s = "10010";
bitset<8> f(s);
- 存储 01字符数组 中的二进制:
bitsetname(char[]); // 定义长度为 N 的二进制数组,命名为 name,将 01字符数组存到其中,长度不够前补0,长度过长截断;
char chs[10] = "10010";
bitset<8> b4(chs);
注意:
直接输出 bitset 为正常的二进制,但是遍历所有位置来输出的话就是逆序的
bitset<8> bs(13);
cout << bs <<endl; //00001101
for(int i=0;i<7;i++) cout<<bs[i]; //10110000
二、 操作
- 正常二进制数的位运算
b2 |= b3; //两个二进制数取或操作;
b2 &= b3; //两个二进制数取与操作;
b2 ^= b3; //取异或;
b2 = ~b2; //取反;
b2 <<= 2; //左移右移;
- 自带的api
int cnt_1 = 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(); //将二进制数组转化为字符串。
标签:name,二进制,c++,用法,bitset,b2,长度,数组
From: https://www.cnblogs.com/chelly-algorithm/p/16769583.html