判断一个整数是不是2的乘方
Posted in 好玩的题目 on 四月 10th, 2010 by 亚楠兄 – Be the first to comment如何判断一个整数是不是2的乘方?很简单
return n==0 ? false: (n&(n-1)==0)
对于2的乘方,二进制必然是 1000000000…的形式,n-1则为 0111111111….的形式
所以n与上n-1 就为0了
现在要证明,有且只有2的乘方符合 n&(n-1)==0

如何判断一个整数是不是2的乘方?很简单
return n==0 ? false: (n&(n-1)==0)
对于2的乘方,二进制必然是 1000000000…的形式,n-1则为 0111111111….的形式
所以n与上n-1 就为0了
现在要证明,有且只有2的乘方符合 n&(n-1)==0