std::has_single_bit 是 C++20 引入的 constexpr 函数,用于判断整数是否为 2 的幂(非零),要求包含 头文件并启用 C++20 标准。
std::has_single_bit 是 C++20 新增的 constexpr 工具函数,专用于判断一个整数是否为 2 的幂(且非零)
它不处理负数、零或浮点数,只对无符号整型或有符号整型的非负值有意义。底层逻辑是检查该数的二进制表示中是否**恰好只有一个 bit 被置为 1**——这正是 2 的幂(1, 2, 4, 8, 16…)的数学本质。
注意:std::has_single_bit 不是宏也不是模板特化技巧,它是标准库提供的头等公民函数,定义在 头文件中。
必须包含 并确保编译器支持 C++20
常见错误是忘记包含头文件,或在不支持 C++20 的模式下编译,此时会报错:‘has_single_bit’ is not a member of ‘std’ 或 unknown type name 'has_single_bit'。
- Clang/GCC 需加
-std=c++20(-std=gnu++20也可) - MSVC 需用 /std:c++20(VS 2019 16.10+ 或 VS 2022)
- 不能用
或替代
最小可运行示例:
立即学习“C++免费学习笔记(深入)”;