一语句实现x是否为2的若干次幂的判断
#define is2*n(x) ((x & (x - 1))? 0 : 1)
int main(void)
{
int m = 512;
cout << ((m & (m - 1)) ? false : true) << endl;
//即当m中只有一位为1时,才为若干次幂值
//若有两个及以上1,则(m & (m - 1))不为0,输出0,表示不为2的若干次幂
return(0);
}
原文转载
http://blog.csdn.net/tommy_wxie/article/details/7355857
想半天没想出来,惭愧啊。
如果是2的若干次幂就表示它只有一位是1,m&(m-1)一定为0;
否则大于0。