1. 程式人生 > >python判斷一個數是否是2的幾次冪

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