实用位掩码#

group utility_bitmask

函数

inline constexpr size_type word_index(size_type bit_index)#

返回包含指定位的单词的索引。

Parameters:

bit_index – 要查询的位的索引

Returns:

包含指定位的单词的索引

inline constexpr size_type intra_word_index(size_type bit_index)#

返回指定位在单词中的位置。

Parameters:

bit_index – 要查询的位的索引

Returns:

指定位在单词中的位置

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

将指定的位设置为 1

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

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

  • bit_index – 要设置的位的索引

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

将指定的位设置为 0

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

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

  • bit_index – 要清除的位的索引

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

指示指定的位是否设置为 1

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

  • bit_index – 要测试的位的索引

Returns:

true 指定的位是 1

Returns:

false 指定的位是 0

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

可选接口,用于检查位掩码的指定位是否已设置。

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

  • bit_index – 要测试的位的索引

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

Returns:

true 指定的位是 1

Returns:

false 指定的位是 0

Returns:

default_value 如果 bitmask 是 nullptr

inline constexpr bitmask_type set_least_significant_bits(size_type n)#

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

如果 n < 0n >= size_in_bits(),行为是未定义的。

Parameters:

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

Returns:

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

inline constexpr bitmask_type set_most_significant_bits(size_type n)#

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

如果 n < 0n >= size_in_bits(),行为是未定义的。

Parameters:

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

Returns:

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