c++ bitset用法

一、 声明:

  1. bitset<N> f; // N是二进制长度,这时每一位都是0
  2. 存储数字的二进制:
    bitset name(num); // 定义长度为 N 的二进制数组,命名为 name,将数字 num 的二进制存到其中;
    bitset<8> f(12) // 二进制长度为8, 将12转换为二进制存入其中
  3. 存储 01字符串 对应的二进制:
    bitset name(string); // 定义长度为 N 的二进制数组,命名为 name,将01串 string 存到其中,长度不够前补 0,长度过长截断;
string s = "10010";
bitset<8> f(s);
  1. 存储 01字符数组 中的二进制:
    bitset name(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

二、 操作

  1. 正常二进制数的位运算
b2 |= b3; //两个二进制数取或操作; 
b2 &= b3; //两个二进制数取与操作; 
b2 ^= b3; //取异或;
b2 = ~b2; //取反; 
b2 <<= 2; //左移右移;

  1. 自带的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(); //将二进制数组转化为字符串。 

posted on 2022-10-08 17:11  chelly酱  阅读(285)  评论(0)    收藏  举报

导航