如何有效地确定整数的汉明权重是否恰好是1?

Wil*_*mKF 0 c++ integer hammingweight c++03

给定C++ 03中的32位或64位整数,确定是否只有一位设置的有效方法是什么?(例如,值正好是1,2,4,8,16,32等中的一个)C++ 03库(或者如果不是C++ 11)是否有任何内置函数可以在我遇到的任何硬件上高效工作在吗?我想将它用于在多次出现时频繁发生的衰减消息.

Log*_*rat 6

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

if (0 == (x & (x - 1)))
{
  there_is_only_1_bit = true;
}
Run Code Online (Sandbox Code Playgroud)

  • 表达式x&=(x-1)将关闭设置的x的最低位. (2认同)