二进制筛选2的幂

给定一个整数,编写一个函数来判断它是否是2的幂次方

示例1:

1
2
3
输入: 1
输出: true
解释: 2的0次方 = 1

示例2:

1
2
3
输入: 16
输出: true
解释: 2的4次方 = 16

示例3:

1
2
输入: 218
输出: false

题解:

1
2
3
考虑2的幂次方正好的二进制的相应位且只有相应位为1,
其作位为0 如 4,8,16 100 1000 10000。。。。。
而4-1,8-1 ,16-1刚好互补,与操作为0,

代码:
python3:

1
2
3
class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n>0 and not n&(n-1)

Go:

1
2
3
func isPowerOfTwo(n int) bool {
    return n>0 && n&(n-1)==0
}