添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
C++ std::bitset

C++ std::bitset

std::bitset 是 C++ 标准库中的一个类,用于表示二进制位序列。它提供了一种方便的方式来处理二进制数据,尤其适用于位运算操作。

std::bitset 类型表示一个固定长度的位序列,每个位都只能是 0 或 1。这个固定长度在创建对象时指定,并且不能在运行时更改。类似于整数类型, std::bitset 支持多种操作,包括位运算、位查询和位设置。

下面是 std::bitset 类型的创建方式:

 #include <bitset>
 std::bitset<N> bitset1; // 创建一个长度为 N 的 bitset,所有位都被初始化为 0
 std::bitset<N> bitset2(value); // 使用二进制整数 value 初始化一个长度为 N 的 bitset
 std::bitset<N> bitset3(string); // 使用二进制字符串 string 初始化一个长度为 N 的 bitset
 std::bitset<N> bitset4(bitset); // 使用另一个 bitset 初始化一个长度为 N 的 bitset

其中, value 是一个无符号整数, string 是一个只包含 '0' '1' 的字符串, bitset 是另一个 std::bitset 对象。

下面是 std::bitset 类型的一些常用操作:

  • size() 返回 std::bitset 的长度
  • count() 返回 std::bitset 中值为 1 的位的数量
  • any() 返回 std::bitset 中是否存在值为 1 的位
  • none() 返回 std::bitset 中是否所有位都是 0
  • all() 返回 std::bitset 中是否所有位都是 1
  • test(pos) 返回 std::bitset 中位于 pos 位置的值
  • set(pos) std::bitset 中位于 pos 位置的值设为 1
  • reset(pos) std::bitset 中位于 pos 位置的值设为 0
  • flip(pos) std::bitset 中位于 pos 位置的值取反
  • to_ulong() 返回 std::bitset 转换成的无符号整数值
  • to_ullong() 返回 std::bitset 转换成的无符号长整数值

std::bitset 重载了许多二进制运算符,如 & | ^ ~ 等,使其支持类似于整数类型的位运算操作。例如:

 std::bitset<4> bitset1("1010");
 std::bitset<4> bitset2("0110");
 std::bitset<4> bitset3 = bitset1 & bitset2; // 按位与运算
 std::bitset<4> bitset4 = bitset1 | bitset2; // 按位或运算
 std::bitset<4> bitset5 = bitset1 ^ bitset2; // 按位异或运算
 std::bitset<4> bitset6 = ~bitset

还可以使用左移、右移运算符进行位移操作:

 std::bitset<4> bitset1("0101");
 std::bitset<4> bitset2 = bitset1 << 2; // 左移 2 位,结果为 "010100"