工具位掩码#

group Bitmask

函数

inline constexpr size_type word_index(size_type bit_index)#

返回包含指定位的字的索引。

参数:

bit_index – 要查询的位的索引

返回:

包含指定位的字的索引

inline constexpr size_type intra_word_index(size_type bit_index)#

返回指定位在字内的位置。

参数:

bit_index – 要查询的位的索引

返回:

指定位在字内的位置

inline void set_bit_unsafe(bitmask_type *bitmask, size_type bit_index)#

将指定位设置为 1

此函数不是线程安全的,即从多个线程并发地尝试更新同一字内的位会导致未定义行为。

参数:
  • bitmask – 包含要设置的位的位掩码

  • bit_index – 要设置的位的索引

inline void clear_bit_unsafe(bitmask_type *bitmask, size_type bit_index)#

将指定位设置为 0

此函数不是线程安全的,即从多个线程并发地尝试更新同一字内的位会导致未定义行为。

参数:
  • bitmask – 包含要清除的位的位掩码

  • bit_index – 要清除的位的索引

inline bool bit_is_set(bitmask_type const *bitmask, size_type bit_index)#

指示指定位是否设置为 1

参数:
  • bitmask – 包含要清除的位的位掩码

  • bit_index – 要测试的位的索引

返回:

true 指定位是 1

返回:

false 指定位是 0

inline bool bit_value_or(bitmask_type const *bitmask, size_type bit_index, bool default_value)#

类似 optional 的接口,用于检查位掩码的指定位是否已设置。

参数:
  • bitmask – 包含要清除的位的位掩码

  • bit_index – 要测试的位的索引

  • default_value – 如果 bitmask 为 nullptr 时返回的值

返回:

true 指定位是 1

返回:

false 指定位是 0

返回:

如果 bitmask 为 nullptr,则返回 default_value

inline constexpr bitmask_type set_least_significant_bits(size_type n)#

返回一个位掩码字,其中设置了最低 n 个有效位。

如果 n < 0 或如果 n >= size_in_bits<bitmask_type>(),则行为未定义

参数:

n – 要设置的最低有效位的数量

返回:

一个设置了最低 n 个有效位的位掩码字

inline constexpr bitmask_type set_most_significant_bits(size_type n)#

返回一个位掩码字,其中设置了最高 n 个有效位。

如果 n < 0 或如果 n >= size_in_bits<bitmask_type>(),则行为未定义

参数:

n – 要设置的最高有效位的数量

返回:

一个设置了最高 n 个有效位的位掩码字