NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
位操作

位操作类与函数的实现 更多...

struct  neforce::bit_reference
 位引用类 更多...
struct  neforce::bitmap_iterator< IsConst, BitMap >
 位图迭代器 更多...
class  neforce::bitmap
 位图容器 更多...
class  neforce::bitset< N >
 固定大小的位集 更多...

函数

constexpr int neforce::popcount64 (uint64_t x) noexcept
 计算64位整数中1的个数
constexpr int neforce::clz64 (uint64_t x) noexcept
 计算64位整数前导零的个数
constexpr int neforce::popcount32 (const uint32_t x) noexcept
 计算32位整数中1的个数
constexpr int neforce::clz32 (uint32_t x) noexcept
 计算32位整数前导零的个数
constexpr int neforce::popcount (const uintptr_t x) noexcept
 计算整数中1的个数
constexpr int neforce::countl_zero (const uintptr_t x) noexcept
 计算整数前导零的个数
constexpr int neforce::countl_one (const uintptr_t x) noexcept
 计算整数前导1的个数
constexpr int neforce::countr_zero (const uintptr_t x) noexcept
 计算整数尾随零的个数
constexpr int neforce::countr_one (const uintptr_t x) noexcept
 计算整数尾随1的个数
constexpr int neforce::lowest_set_bit_pos (const intptr_t x) noexcept
 获取最低设置位的位置,从0开始
constexpr int neforce::highest_set_bit_pos (const intptr_t x) noexcept
 获取最高设置位的位置
constexpr bool neforce::parity32 (uint32_t x) noexcept
 计算32位整数的奇偶性
constexpr bool neforce::parity64 (uint64_t x) noexcept
 计算64位整数的奇偶性
constexpr bool neforce::parity (const uintptr_t x) noexcept
 计算整数的奇偶性
constexpr int neforce::bit_width (const uintptr_t x) noexcept
 计算表示整数所需的最小位宽
constexpr uintptr_t neforce::bit_floor (const uintptr_t x) noexcept
 获取不大于x的最大2的幂
constexpr uint64_t neforce::bit_ceil (const uintptr_t x) noexcept
 获取不小于x的最小2的幂
constexpr bool neforce::has_single_bit (const uintptr_t x) noexcept
 检查整数是否为2的幂
constexpr uint32_t neforce::rotate_l32 (const uint32_t x, const int s) noexcept
 32位整数循环左移
constexpr uint32_t neforce::rotate_r32 (const uint32_t x, const int s) noexcept
 32位整数循环右移
constexpr uint64_t neforce::rotate_l64 (const uint64_t x, const int s) noexcept
 64位整数循环左移
constexpr uint64_t neforce::rotate_r64 (const uint64_t x, const int s) noexcept
 64位整数循环右移
constexpr uintptr_t neforce::rotate_l (const uintptr_t x, const int s) noexcept
 整数循环左移
constexpr uintptr_t neforce::rotate_r (const uintptr_t x, const int s) noexcept
 整数循环右移
constexpr uintptr_t neforce::bit_extract (const uintptr_t x, const int pos, const int len) noexcept
 从整数中提取指定位段
constexpr uintptr_t neforce::bit_insert (const uintptr_t x, const uintptr_t bits, const int pos, const int len) noexcept
 向整数中插入指定位段
constexpr uint32_t neforce::reverse_bits32 (uint32_t x) noexcept
 反转32位整数的位顺序
constexpr uint64_t neforce::reverse_bits64 (uint64_t x) noexcept
 反转64位整数的位顺序
constexpr uintptr_t neforce::reverse_bits (const uintptr_t x) noexcept
 反转整数的位顺序
constexpr uintptr_t neforce::mask_from_to (const int from, const int to) noexcept
 生成从from到to的位掩码

变量

constexpr uint32_t neforce::BITMAP_WORD_SIZE = 8 * sizeof(uint32_t)
 每个字的位数

详细描述

位操作类与函数的实现

函数说明

◆ bit_ceil()

uint64_t neforce::bit_ceil ( const uintptr_t x)
constexprnoexcept

获取不小于x的最小2的幂

参数
x无符号整数
返回
不小于x的最小2的幂,如果x为0则返回1

在文件 bit.hpp294 行定义.

引用了 bit_ceil(), bit_floor() , 以及 floor().

被这些函数引用 bit_ceil().

◆ bit_extract()

uintptr_t neforce::bit_extract ( const uintptr_t x,
const int pos,
const int len )
constexprnoexcept

从整数中提取指定位段

参数
x源整数
pos起始位置,从0开始
len要提取的位数
返回
提取的位段

在文件 bit.hpp383 行定义.

引用了 bit_extract().

被这些函数引用 bit_extract().

◆ bit_floor()

uintptr_t neforce::bit_floor ( const uintptr_t x)
constexprnoexcept

获取不大于x的最大2的幂

参数
x无符号整数
返回
不大于x的最大2的幂,如果x为0则返回0

在文件 bit.hpp287 行定义.

引用了 bit_floor() , 以及 bit_width().

被这些函数引用 bit_ceil() , 以及 bit_floor().

◆ bit_insert()

uintptr_t neforce::bit_insert ( const uintptr_t x,
const uintptr_t bits,
const int pos,
const int len )
constexprnoexcept

向整数中插入指定位段

参数
x目标整数
bits要插入的位段
pos插入位置,从0开始
len要插入的位数
返回
插入后的整数

在文件 bit.hpp395 行定义.

引用了 bit_insert().

被这些函数引用 bit_insert().

◆ bit_width()

int neforce::bit_width ( const uintptr_t x)
constexprnoexcept

计算表示整数所需的最小位宽

参数
x无符号整数
返回
表示x所需的最小位数

在文件 bit.hpp274 行定义.

引用了 bit_width() , 以及 countl_zero().

被这些函数引用 bit_floor() , 以及 bit_width().

◆ clz32()

int neforce::clz32 ( uint32_t x)
constexprnoexcept

计算32位整数前导零的个数

参数
x32位无符号整数
返回
x中前导零的个数,如果x为0则返回32

在文件 bit.hpp91 行定义.

引用了 clz32().

被这些函数引用 clz32(), countl_zero() , 以及 highest_set_bit_pos().

◆ clz64()

int neforce::clz64 ( uint64_t x)
constexprnoexcept

计算64位整数前导零的个数

参数
x64位无符号整数
返回
x中前导零的个数,如果x为0则返回64

在文件 bit.hpp40 行定义.

引用了 clz64().

被这些函数引用 _udiv128(), clz64(), countl_zero(), neforce::uint128_t::divmod128() , 以及 highest_set_bit_pos().

◆ countl_one()

int neforce::countl_one ( const uintptr_t x)
constexprnoexcept

计算整数前导1的个数

参数
x无符号整数
返回
x中前导1的个数

在文件 bit.hpp149 行定义.

引用了 countl_one() , 以及 countl_zero().

被这些函数引用 countl_one().

◆ countl_zero()

int neforce::countl_zero ( const uintptr_t x)
constexprnoexcept

计算整数前导零的个数

参数
x无符号整数
返回
x中前导零的个数

在文件 bit.hpp136 行定义.

引用了 clz32(), clz64() , 以及 countl_zero().

被这些函数引用 bit_width(), countl_one() , 以及 countl_zero().

◆ countr_one()

int neforce::countr_one ( const uintptr_t x)
constexprnoexcept

计算整数尾随1的个数

参数
x无符号整数
返回
x中尾随1的个数

在文件 bit.hpp199 行定义.

引用了 countr_one() , 以及 countr_zero().

被这些函数引用 countr_one().

◆ countr_zero()

int neforce::countr_zero ( const uintptr_t x)
constexprnoexcept

计算整数尾随零的个数

参数
x无符号整数
返回
x中尾随零的个数,如果x为0则返回类型位宽

在文件 bit.hpp156 行定义.

引用了 countr_zero().

被这些函数引用 countr_one(), countr_zero(), neforce::simd::find_first_byte() , 以及 lowest_set_bit_pos().

◆ has_single_bit()

bool neforce::has_single_bit ( const uintptr_t x)
constexprnoexcept

检查整数是否为2的幂

参数
x无符号整数
返回
如果x是2的幂则返回true,否则返回false

在文件 bit.hpp307 行定义.

引用了 has_single_bit().

被这些函数引用 has_single_bit().

◆ highest_set_bit_pos()

int neforce::highest_set_bit_pos ( const intptr_t x)
constexprnoexcept

获取最高设置位的位置

参数
x有符号整数
返回
最高设置位的位置,如果没有设置位则返回-1

在文件 bit.hpp214 行定义.

引用了 clz32(), clz64() , 以及 highest_set_bit_pos().

被这些函数引用 neforce::simd::find_last_byte() , 以及 highest_set_bit_pos().

◆ lowest_set_bit_pos()

int neforce::lowest_set_bit_pos ( const intptr_t x)
constexprnoexcept

获取最低设置位的位置,从0开始

参数
x有符号整数
返回
最低设置位的位置,如果没有设置位则返回-1

在文件 bit.hpp207 行定义.

引用了 countr_zero() , 以及 lowest_set_bit_pos().

被这些函数引用 lowest_set_bit_pos().

◆ mask_from_to()

uintptr_t neforce::mask_from_to ( const int from,
const int to )
constexprnoexcept

生成从from到to的位掩码

参数
from起始位置(包含)
to结束位置(包含)
返回
从from位到to位为1,其他位为0的掩码

在文件 bit.hpp451 行定义.

引用了 mask_from_to().

被这些函数引用 mask_from_to().

◆ parity()

bool neforce::parity ( const uintptr_t x)
constexprnoexcept

计算整数的奇偶性

参数
x无符号整数
返回
如果x中1的个数为奇数返回true,否则返回false

在文件 bit.hpp260 行定义.

引用了 parity(), parity32() , 以及 parity64().

被这些函数引用 parity().

◆ parity32()

bool neforce::parity32 ( uint32_t x)
constexprnoexcept

计算32位整数的奇偶性

参数
x32位无符号整数
返回
如果x中1的个数为奇数返回true,否则返回false

在文件 bit.hpp231 行定义.

引用了 parity32().

被这些函数引用 parity() , 以及 parity32().

◆ parity64()

bool neforce::parity64 ( uint64_t x)
constexprnoexcept

计算64位整数的奇偶性

参数
x64位无符号整数
返回
如果x中1的个数为奇数返回true,否则返回false

在文件 bit.hpp245 行定义.

引用了 parity64().

被这些函数引用 parity() , 以及 parity64().

◆ popcount()

int neforce::popcount ( const uintptr_t x)
constexprnoexcept

计算整数中1的个数

参数
x无符号整数
返回
x中1的个数

在文件 bit.hpp123 行定义.

引用了 popcount(), popcount32() , 以及 popcount64().

被这些函数引用 neforce::bitset< N >::count() , 以及 popcount().

◆ popcount32()

int neforce::popcount32 ( const uint32_t x)
constexprnoexcept

计算32位整数中1的个数

参数
x32位无符号整数
返回
x中1的个数

在文件 bit.hpp76 行定义.

引用了 popcount32().

被这些函数引用 popcount() , 以及 popcount32().

◆ popcount64()

int neforce::popcount64 ( uint64_t x)
constexprnoexcept

计算64位整数中1的个数

参数
x64位无符号整数
返回
x中1的个数

在文件 bit.hpp25 行定义.

引用了 popcount64().

被这些函数引用 popcount() , 以及 popcount64().

◆ reverse_bits()

uintptr_t neforce::reverse_bits ( const uintptr_t x)
constexprnoexcept

反转整数的位顺序

参数
x无符号整数
返回
位反转后的整数

在文件 bit.hpp436 行定义.

引用了 reverse_bits(), reverse_bits32() , 以及 reverse_bits64().

被这些函数引用 reverse_bits().

◆ reverse_bits32()

uint32_t neforce::reverse_bits32 ( uint32_t x)
constexprnoexcept

反转32位整数的位顺序

参数
x32位无符号整数
返回
位反转后的整数

在文件 bit.hpp407 行定义.

引用了 reverse_bits32().

被这些函数引用 reverse_bits() , 以及 reverse_bits32().

◆ reverse_bits64()

uint64_t neforce::reverse_bits64 ( uint64_t x)
constexprnoexcept

反转64位整数的位顺序

参数
x64位无符号整数
返回
位反转后的整数

在文件 bit.hpp421 行定义.

引用了 reverse_bits64().

被这些函数引用 reverse_bits() , 以及 reverse_bits64().

◆ rotate_l()

uintptr_t neforce::rotate_l ( const uintptr_t x,
const int s )
constexprnoexcept

整数循环左移

参数
x无符号整数
s旋转位数
返回
循环左移后的结果

在文件 bit.hpp353 行定义.

引用了 rotate_l(), rotate_l32() , 以及 rotate_l64().

被这些函数引用 rotate_l().

◆ rotate_l32()

uint32_t neforce::rotate_l32 ( const uint32_t x,
const int s )
constexprnoexcept

32位整数循环左移

参数
x32位无符号整数
s旋转位数
返回
循环左移后的结果

在文件 bit.hpp315 行定义.

引用了 rotate_l32().

被这些函数引用 rotate_l(), rotate_l32(), rotate_r32() , 以及 XXH32().

◆ rotate_l64()

uint64_t neforce::rotate_l64 ( const uint64_t x,
const int s )
constexprnoexcept

64位整数循环左移

参数
x64位无符号整数
s旋转位数
返回
循环左移后的结果

在文件 bit.hpp334 行定义.

引用了 rotate_l64().

被这些函数引用 rotate_l(), rotate_l64(), rotate_r64() , 以及 XXH64().

◆ rotate_r()

uintptr_t neforce::rotate_r ( const uintptr_t x,
const int s )
constexprnoexcept

整数循环右移

参数
x无符号整数
s旋转位数
返回
循环右移后的结果

在文件 bit.hpp367 行定义.

引用了 rotate_r(), rotate_r32() , 以及 rotate_r64().

被这些函数引用 rotate_r().

◆ rotate_r32()

uint32_t neforce::rotate_r32 ( const uint32_t x,
const int s )
constexprnoexcept

32位整数循环右移

参数
x32位无符号整数
s旋转位数
返回
循环右移后的结果

在文件 bit.hpp326 行定义.

引用了 rotate_l32() , 以及 rotate_r32().

被这些函数引用 rotate_r() , 以及 rotate_r32().

◆ rotate_r64()

uint64_t neforce::rotate_r64 ( const uint64_t x,
const int s )
constexprnoexcept

64位整数循环右移

参数
x64位无符号整数
s旋转位数
返回
循环右移后的结果

在文件 bit.hpp345 行定义.

引用了 rotate_l64() , 以及 rotate_r64().

被这些函数引用 rotate_r() , 以及 rotate_r64().