📌  相关文章
📜  程序检查数字是否可以表示为2的偶数幂(1)

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

程序检查数字是否可以表示为2的偶数幂

这个基本问题可以通过比较简单的方法完成,只需检查位表示法中是否只有一个位是1。

可以使用以下代码片段来实现这个功能:

def is_power_of_2(num):
    """
    :param num: 待检查的数字
    :return: 如果数字可以表示为2的偶数幂,则返回True;否则返回False
    """
    # 1 左移1位,得到2
    # 2 左移1位,得到4
    # 4 左移1位,得到8
    # 8 左移1位,得到16
    # 以此类推
    # 如果 num 是2的偶数幂,则num中只有一个二进制位是1
    return (num != 0) and ((num & (num - 1)) == 0)

上述代码片段中,num & (num - 1) 的结果是从二进制表示中去掉最右边的1所得到的数字。例如,对于二进制数 1100 1100 & (1100 - 1) 结果为 1000

此外,我们在函数中添加了一个 num != 0 的判断。因为0不是2的任何幂,因此需要特殊处理。

现在你可以轻松使用函数 is_power_of_2 来检查任意数字是否可以表示为2的偶数幂。