#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;
std::cout<<bas.count()<<std::endl;
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);
std::cout<<bas<<std::endl;
bas.reset(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;
std::cout << (foo&=bar) << std::endl;
std::cout << (foo|=bar) << std::endl;
std::cout << (foo<<=2) << std::endl;
std::cout << (foo>>=1) << std::endl;
std::cout << (~bar) << std::endl;
std::cout<<bar<<std::endl;
std::cout << (bar<<1) << std::endl;
std::cout<<bar<<std::endl;
std::cout << (bar>>1) << std::endl;
std::cout<<bar<<std::endl;
std::cout << (foo==bar) << std::endl;
std::cout << (foo!=bar) <<std::endl;
std::cout << (foo&bar) << std::endl;
std::cout << (foo|bar) << std::endl;
std::cout << (foo^bar) << std::endl;
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;
}