c++ - 如何高效判断一个整数的汉明权重是否正好为1?

标签 c++ integer c++03 hammingweight

给定 C++03 中的 32 位或 64 位整数,确定是否恰好设置了一位的有效方法是什么? (例如,值恰好是 1、2、4、8、16、32 等中的一个)C++ 03 库(如果没有,则为 C++11)是否有任何内置函数可以在我碰巧遇到的任何硬件上高效工作在吗?我想将其用于多次出现的频率越来越低的衰减消息。

最佳答案

如果你有一个已知不为零的整数x,那么

if (0 == (x & (x - 1)))
{
  there_is_only_1_bit = true;
}

关于c++ - 如何高效判断一个整数的汉明权重是否正好为1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25694959/

相关文章:

c++ - Qt5 : This code compiles ok with msvc2012, 仍然给出用 MinGW 编译的错误...为什么?

c++ - 将字符串转换为小部件名称 QT 5.6

c++ - 为什么这个正则表达式模式 (tr1::regex) 会出现异常?

c++ - 将具有显式转义序列的字符串转换为相关字符

jquery .not (":contains(' <<任意数字>>')")

Python 简化 'If' 语句

python - 你如何检查一个数字是否可以被另一个数字整除?

c++03: std::map 中内置类型的默认构造函数

C++从编译时多态性中隐藏模板习语

c++ - 指数为整数时pow(x,p)更快吗?