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