std::countr_zero
一 基本功能
1 作用
std::countr_zero 是 C++20 标准引入的位操作函数,用于计算无符号整数的二进制表示中末尾零(Trailing Zeros)的数量。
定义:位于 <bit> 头文件中,是标准库的一部分。
2 示例
#include <bit>
unsigned int x = 12; // 二进制 1100
int zeros = std::countr_zero(x); // 返回 2
二 语法与参数
函数原型(模板形式):
template <class T>
constexpr int countr_zero(T x) noexcept;
参数:x 必须为无符号整数类型(如 unsigned int, uint32_t, size_t 等)。
返回值:末尾零的数量。若 x = 0,返回 T 的位数(例如 32 对应 uint32_t)。
三 关键特性
1 标准化行为
输入为 0 时,返回类型的位数(如 8 位类型返回 8),无未定义行为。
输入非零时,行为与 __builtin_ctz 一致,但更安全。
2 编译时常量
若输入是编译期常量,结果可在编译期计算(C++17 起