如何有效地确定一个整数的汉明权是否正是一

How to efficiently determine whether the Hamming Weight of an integer is exactly one?

本文关键字:是否 整数 有效地 一个      更新时间:2023-10-16

在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;
}