头文件
#include <bitset>
常用方法
构造
std::bitset<8> foo;
std::bitset<8> bar (0x14);
std::bitset<8> baz (std::string("11011101"));
访问
reference operator[](size_t __position)
bool operator[](size_t __position)
bool test(size_t __position) const
设置
set();
set(size_t __position, bool __val = true)
reset()
reset(size_t __position)
flip()
flip(size_t __position)
长度
size_t count();
size_t size();
类型转换
to_string()
to_ulong()
to_ullong()
其他
bool any() ;
bool none() ;
bool all() ;
操作符
|
&
~
^
<<
>>
测试
int main()
{
std::bitset<8> foo;
foo[0]=1;
foo[3]=1;
foo[4]=1;
std::cout << foo << std::endl;
std::cout <<"count:"<<foo.count()<<" size:"<<foo.size()<<std::endl;
std::cout << foo.test(0) <<" "<< foo.test(1) << " "<<foo[4]<<std::endl;
std::cout <<"any:" <<foo.any()<<" none:"<<foo.none()<<" all:"<<foo.all()<< std::endl;
foo.set();
std::cout << foo << std::endl;
foo.reset();
std::cout << foo << std::endl;
foo.set(2,1);
std::cout << foo << std::endl;
foo.set(2,0);
std::cout << foo << std::endl;
foo.set(1);
std::cout << foo << std::endl;
foo.reset(1);
std::cout << foo << std::endl;
foo.set(1);
foo.flip();
std::cout << foo << std::endl;
foo.flip(1);
std::cout << foo << std::endl;
foo.flip(2);
std::cout << foo.to_string() << " " << foo.to_ulong() <<" "<< foo.to_ullong() << std::endl;
}
测试结果
00011001
count:3 size:8
1 0 1
any:1 none:0 all:0
11111111
00000000
00000100
00000000
00000010
00000000
11111101
11111111
11111011 251 251
位操作符号测试
foo.reset();
foo.set(0);
foo = foo << 3;
std::cout << foo << std::endl;
auto foo1 = foo;
foo = ~foo ;
foo.set(1,0);
std::cout << foo << std::endl;
auto foo2 = foo ^ foo1;
std::cout << foo2 << std::endl;
auto foo3 = foo | foo1;
std::cout << foo3<< std::endl;
auto foo4 = foo & foo1;
std::cout << foo4<< std::endl;
测试结果
00001000
11110101
11111101
11111101
00000000