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