📜  检查给定数是否为d的幂,其中d为2的幂(1)

📅  最后修改于: 2023-12-03 15:40:35.896000             🧑  作者: Mango

检查给定数是否为d的幂,其中d为2的幂

当我们需要判断一个数是否为2的幂时,可以利用位运算快速计算。在二进制下,2的幂次方只有最高位为1,其余位为0。例如2^3=8,在二进制下为1000。

位运算

位运算中有三个运算符可以用来判断一个数是否为2的幂:与(&)、或(|)、异或(^)。

与运算:两个数对应的二进制位都为1时结果为1,否则为0。因此,若n为2的幂,则n与n-1进行与运算的结果为0。

或运算:两个数对应的二进制位都为0时结果为0,否则为1。因此,若n为2的幂,则n与n-1进行或运算的结果为n。

异或运算:两个数对应的二进制位相同则结果为0,不同则结果为1。因此,若n为2的幂,则n与n-1进行异或运算的结果为1。

代码实现
def is_power_of_two(n: int) -> bool:
    """
    判断n是否为2的幂
    """
    if n <= 0:
        return False
    return n & (n - 1) == 0

以上代码中,我们首先判断n是否小于等于0,若是,则直接返回False。否则,我们用n与n-1进行与运算,若结果为0,则n为2的幂,返回True;否则,返回False。