http://www.cppblog.com/converse/archive/2006/07/10/9664.html
bool Is2Power(int nNum)
{
return nNum > 0 ? ((nNum & (~nNum + 1)) == nNum ? true : false) : false;
}
或者
#define IS_POWER_OF_2(v) (!((v) & ((v) - 1)) && (v))
判断整数是否为2的幂次
本文提供了两种不同的方法来判断一个整数是否为2的幂次。第一种方法使用了C/C++的布尔表达式,通过位运算与取反加一的方式实现;第二种方法则采用宏定义的形式,利用按位与操作符完成判断。
http://www.cppblog.com/converse/archive/2006/07/10/9664.html
bool Is2Power(int nNum)
{
return nNum > 0 ? ((nNum & (~nNum + 1)) == nNum ? true : false) : false;
}
或者
#define IS_POWER_OF_2(v) (!((v) & ((v) - 1)) && (v))

被折叠的 条评论
为什么被折叠?