一个数是否是2的幂次,只要这个数字的二进制表示只有一个1,则这个数字是2的幂次。
- 消除最低位的1的方式是n & (n-1),之前的题目也用过这个操作。2的幂次只有一个1,则满足n&(n-1)==0
- 位运算,右移, 求1出现的次数。
- 对于负数,直接返回False
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
num = 0
if n < 0:
return False
while n:
last = n & 1
num += last
n = n >> 1
if num == 1:
return True
else:
return False