python判断一个数是否是2的几次幂


判断一个数是不是2的几次幂,最简单粗暴的做法就是直接迭代除以2,这里有一个更好的方法,那就是采用位运算。

我们观察下面属于2的几次幂的数的变化规律,用2进制表示。

十进制 二进制 0                 0
2                 10
4                 100
8                 1000
16                10000

我们会发现凡是2的几次幂0除外,用二进制表示第一位全是1,后面全是0。这个规律好像是这样但是有什么用呢,不要急,你再看一下比他小一个数的规律就懂了。

十进制 二进制 1                 01
3                 011
7                 0111
15                01111

发现比他小一个数全是第一位为0后面全为1,刚刚跟2的几次幂对应的数相反,这时就可以用位运算中的与运算来解决了。

解决代码:

def judge(num):
    num = int(num)
    return True if num == 0 or num & (num - 1) == 0 else False


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM