将整数转化为二进制。看二进制当中是否只有一个1,如果是的话,那就是2的次幂,反之,则不是2的次幂。
判断二进制当中是否只有一个1,通过和1相加模2,如果结果是1,说明是0,如果结果是0,说明是1。
def IsPower(n):
count = 0
a = bin(n)
for i in range(2, len(a)):
if (int(a[i]) + 1) % 2 == 0:
count += 1
if count == 1:
print(True)
else:
print(False)
IsPower(32)
IsPower(20)
输出结果为:
True
False
如果不能保证输入是正整数的情况下,则需要分开讨论
def IsPower(n):
count = 0
if n > 0:
a = bin(n)
for i in range(2, len(a)):
if (int(a[i]) + 1) % 2 == 0:
count += 1
if count == 1:
print(True)
else:
print(False)
else:
a = bin(n)
for i in range(3, len(a)):
if (int(a[i]) + 1) % 2 == 0:
count += 1
if count == 1:
print(True)
else:
print(False)
IsPower(-32)
IsPower(32)
IsPower(20)
输出结果为:
True
True
False