C++ bitset

#include <QCoreApplication>

#include<iostream>
#include<string>
#include<bitset>

using namespace std;



int main(int argc, char *argv[])
{
    std::bitset<4> foo1 (0xff1);
    std::bitset<4> foo (std::string("1001"));
    std::bitset<4> bar (std::string("0011"));
    std::bitset<16> bas(std::string("010101011101"));


    std::cout<<foo<<std::endl;
    std::cout<<bar<<std::endl;
    std::cout<<bas<<std::endl;


    std::cout<<bas[0]<<std::endl; //返回true false
    std::cout<<bas.count()<<std::endl;  // 返回为true的数量
    std::cout<<bas.size()<<std::endl; //返回当前总共多少位
    std::cout<<bas.any()<<std::endl;// 是否有位被置位
    std::cout<<bas.none()<<std::endl;// 是否都没有置位
    std::cout<<bas.all()<<std::endl;//是否都置位了

    bas.set(2);// 第2位置位
    std::cout<<bas<<std::endl;

    bas.reset(2); //第2位复位
    std::cout<<bas<<std::endl;

    bas.flip(2);//第二位翻转
    std::cout<<bas<<std::endl;

    std::cout<<bas.to_string()<<std::endl;

    std::cout<<bar.to_ullong()<<std::endl;
    std::cout<<bar.to_ulong()<<std::endl;

    std::cout<<bas<<std::endl;

    std::cout << (foo^=bar) << std::endl;       // 1010 (XOR,assign)
    std::cout << (foo&=bar) << std::endl;       // 0010 (AND,assign)
    std::cout << (foo|=bar) << std::endl;       // 0011 (OR,assign)

    std::cout << (foo<<=2) << std::endl;        // 1100 (SHL,assign)
    std::cout << (foo>>=1) << std::endl;        // 0110 (SHR,assign)

    std::cout << (~bar) << std::endl;           // 1100 (NOT) 不修改
    std::cout<<bar<<std::endl;
    std::cout << (bar<<1) << std::endl;         // 0110 (SHL) 不修改
    std::cout<<bar<<std::endl;
    std::cout << (bar>>1) << std::endl;         // 0001 (SHR)不修改
    std::cout<<bar<<std::endl;

    std::cout << (foo==bar) << std::endl;       // false (0110==0011)
    std::cout << (foo!=bar) <<std::endl;       // true  (0110!=0011)

    std::cout << (foo&bar) << std::endl;        // 0010
    std::cout << (foo|bar) << std::endl;        // 0111
    std::cout << (foo^bar) << std::endl;        // 0101


    return 0;
}

      bitset<_Nb>
      operator<<(size_t __position) const _GLIBCXX_NOEXCEPT
      { return bitset<_Nb>(*this) <<= __position; }
      bitset<_Nb>&
      operator<<=(size_t __position) _GLIBCXX_NOEXCEPT
      {
	if (__builtin_expect(__position < _Nb, 1))
	  {
	    this->_M_do_left_shift(__position);
	    this->_M_do_sanitize();
	  }
	else
	  this->_M_do_reset();
	return *this;
      }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值