📅  最后修改于: 2023-12-03 15:27:21.952000             🧑  作者: Mango
这个基本问题可以通过比较简单的方法完成,只需检查位表示法中是否只有一个位是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的偶数幂。