📅  最后修改于: 2023-12-03 15:40:34.170000             🧑  作者: Mango
有时候我们需要判断一个数字是否是2的幂。在Python中,可以通过如下代码实现:
def is_power_of_two(n: int) -> bool:
if n <= 0:
return False
return n & (n - 1) == 0
这个代码使用位运算的技巧:如果n是2的幂,则n的二进制表示中只有1个1(例如2的3次方是0b1000)。而n-1将这个1变成了0,并旁边所有的0变成了1。这时候n & (n-1)得到的结果就是0。因此这个代码只需要判断结果是否为0即可判断数字是否是2的幂。
我们也可以使用内置的math库来实现这段代码。代码如下:
import math
def is_power_of_two(n: int) -> bool:
if n <= 0:
return False
return math.log2(n).is_integer()
这段代码使用math.log2()函数来计算n的对数。如果对数是整数,则n是2的幂。
无论选择哪种方式,判断一个数字是否是2的幂都非常方便。如果你需要在自己的代码中进行此类操作,可以直接使用上述代码片段。