📅  最后修改于: 2023-12-03 15:19:34.870000             🧑  作者: Mango
当一个数是2的幂时,说明它的二进制形式只有一位是1,其他都是0。例如2的3次幂为8,二进制为1000,只有一个1,因此它是2的幂。
我们可以通过位运算的方式来判断一个数是否是2的幂。具体方法是:
下面是Python代码:
def is_power_of_two(n: int) -> bool:
if n <= 0:
return False
return (n & (n - 1)) == 0
该函数接受一个整数n作为参数,如果n是2的幂,返回True,否则返回False。
我们可以测试一下这个函数的正确性:
assert is_power_of_two(2) == True
assert is_power_of_two(4) == True
assert is_power_of_two(5) == False
assert is_power_of_two(1024) == True
assert is_power_of_two(1023) == False
这些测试都通过了,说明我们的程序是正确的。
请注意,我们在函数开头加了一条特殊处理:
if n <= 0:
return False
这是因为0不是2的幂,而负数的二进制表示中可能有多个1,因此也不是2的幂,我们需要把这些情况都排除掉。