bitset

一、初始化 bitset 对象的方法

    bitset<n>b;

    bn 位,每位都 0

    bitset<n> b(u);

    bunsigned longu 的一个副本

    bitset<n> b(s);

    bstring 对象 s 中含有的位串的副本    bitset<n> b(s, pos, n);

    bs 中从位置 pos 开始的&nbps;n 个位的副本。

    用 string 对象初始化 bitset 对象时,string 对象直接表示为位模式。从string 对象读入位集的顺序是从右向左。

string strval("1100");
bitset<32> bitvec(strval);

bitvec4 的位模式中第 2 和 3 的位置为 1,其余位置都为 0。如果 string 对象的字符个数小于 bitset 类型的长度,则高阶位置为 0。

strval[0]=1----->bitvec[3]=1

strval[1]=1----->bitvec[2]=1

strval[2]=0----->bitvec[1]=0

strval[3]=0----->bitvec[0]=0

总结:从这里我们可以得知,bitset的对象的低阶位在最右边

string str("1111111000000011001101");
bitset<32> bitvec(str, 5, 4);                                                                                                   //用str[5]开始向右4位 "1100"初始化bitset的对象,得到:bitvec[31]=0....bitvec[4]=,0bitvec[3]=1,bitvec[2]=1,bitvec[1]=0,bitvec[0]=0      bitset<32> bitvec(str, str.size() - 4);                                                                                         //str的开始str[0]到str[27]均初始化为0,而str[28]=1、str[29]=1、str[30]=0、str[31]=1分别初始化bitset对象bitvec的bitvec[3]=1、bitvec[2]=1、bitvec[1]=0、bitvec[0]=1

二、bitset 对象上的操作

   由于书中翻译的感觉有点别扭,还是看英文的更加准确的理解这些操作,如下英文中的"on"即表示"1","off"则表示"0"

   b.any()---------------Is any bit in b on?

   b.none()--------------Are no bits in b on?

   b.count()-------------Number of bits in b that are on

            -------------count操作的返回类型是标准库中命名为size_t 类型

   b.size()--------------Number of bits in b

           --------------size操作的返回类型是标准库中命名为size_t 类型 如:size_t sz = bitvec.size();

   b[pos]----------------Access bit in b at positionpos

   b.test(pos)-----------Is bit in b in position pos on?

   b.set()---------------Turn on all bits in b

   b.set(pos)------------Turn on the bit in b at positionpos

   b.reset()-------------Turn off all bits in b

   b.rest(pos)-----------Turn off the bit in b at positionpos

   b.flip()--------------Change the state of each bit in b

   b.flip(pos)-----------Reverse value of the bit in b in positionpos

   b.to_ulong()----------Returns an unsigned long with the same bits as inb

   os<<b-----------------Prints the bits in b to the streamos

三、访问 bitset 对象中的位

   通过下标来访问,在此就不再赘述了。

四、对整个 bitset 对象进行设置

bitvec.reset(); // set all the bits to 0.
bitvec.set();   // set all the bits to 1
bitvec.flip(0);   // reverses value of first bit
bitvec[0].flip(); // also reverses the first bit
bitvec.flip();    // reverses value of all bits

五、获取bitset对象的值

六、输出二进制位

bitset<32> bitvec2(0xffff); // bits 0 ... 15 are set to 1; 16 ... 31 are 0
cout << "bitvec2: " << bitvec2 << endl;

输出结果为:

     bitvec2: 00000000000000001111111111111111

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值