class Solution:
def isPowerOfTwo(self, n: int) -> bool:
# num = 0
# for i in range(100):
# num = 2**i
# if num==n:
# return True
# if num>n:
# return False
# if n == 0:
# return False
# while n % 2 == 0:
# n /= 2
# return n == 1
if n == 0:
return False
return n & (n - 1) == 0
- 如果是2的幂次的话,那么二进制的表示中就仅仅含有1个1
- 如果不是2的幂次的话,那么二进制的表示中就会有多个1
- 因此让n和n-1做与运算,如果得到的结果是0的话,那就说明这个数字的2的幂