Bitset基本使用介绍

Bitset基本使用介绍

头文件

#include <bitset>

简单声明(声明一个35位bitset)

std::bitset<35> v1;

可以直接使用cout输出整个bitset串

std::bitset<35> v1;
v1[0] = 1, v1[3] = 1; //直接赋值
std::cout << v1;

cout会输出所有位情况

00000000000000000000000000000001001

初始化

  • 使用整数初始化,会使用它的二进制来赋值,并且可以直接使用等号赋值
std::bitset<32> v1(2143215);
std::bitset<15> v2(2143215);
std::cout << v1 << std::endl << v2;

输出(注意位数取舍情况)

00000000001000001011001111101111
011001111101111
  • 使用string型赋值
std::string it = "10000101";
std::bitset<10> v1(it);
std::cout << v1;

输出

0010000101
  • 用srting型str第i位开始向后j位赋值 (str, i, j)
std::string it = "100110";
std::bitset<10> v1(it, 0, 4); //这里是第0位开始向后4位
std::cout << v1;

输出

0000001001

函数

any() 是否有1

count() 有几个1

size() 大小(数位个数)

none() 是否无1

all() 是否都为1

set() 所有位 置为1

set(i) 第i位 置为1

reset() 所有位 置为0

reset(i) 第i位 置为0

flip() 所有位取反

flip(i) 第i位取反

to_ulong() 返回转化 为unsigned long 的结果

to_ullong()返回转化位 unsigned long long 的结果

to_string() 返回转化为 string 的结果f

转义

std::string it = "ACCA";
std::bitset<32>v1(it, 0, it.size(), 'C', 'A');
std::cout << v1;
std::cout << std::endl;
std::cout << v1.to_string('A','C');

输出

00000000000000000000000000001001
AAAAAAAAAAAAAAAAAAAAAAAAAAAACAAC

运算符支持

支持bitset之间与或非异或,自身取反,左移右移


参考资料

cplusplus

C++ bitset使用示例 – 斗大的熊猫

cppreference

发表评论

电子邮件地址不会被公开。 必填项已用*标注