给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
输入: 1
输出: true
解释: 20 = 1
这里我们采用 位运算
在python中 ,如果a,b是数值变量, 则&, |表示位运算
‘&’ 表示 ‘与’ 运算 (按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0)
'|' 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
而2的幂次方,比如8
,二进制表示为 1000
,那么 8-1=7 的二进制是 0111
我们这就是采用这个来(二进制)判断 8 & 7 = 0, 2 & 1 = 0, 16 & 15 = 0
所以我们的代码就是:
class Solution:
def isPowerOfTwo(self, n):
"""
:type n: int
:rtype: bool
"""
# 判断 n是否大于0,以及n和n-1进行与运算,是为为0
return n > 0 and (n & n-1) == 0