1. 程式人生 > >判斷一個數是否是2的整數次冪,python實現。

判斷一個數是否是2的整數次冪,python實現。

問題:判斷一個數是否是2的整數次冪?

分析一:判斷一個數是否是是2的整數次冪。方法和思路也很多,其中最簡單的就是,用這個數除以2用除的商再除以2,直到最後被除數為2,證明這個數是2的整數次冪。這種思路簡單,但是略顯笨重。我們採用第二種思路。
分析二:由於2這個數在計算機中是一個比較特殊的數。計算機是以二進位制進行運算的。於是有了按位與,或,異或和非的運算。2的整數次冪都有一個共同的特點,就是以二進位制表示後,首位為1其他位全為0(例如:4 二進位制表示為100,8二進位制表示1000)我們沿著這一思路進行分析,比2的整數次冪數小1的數,二進位制表示都為首位為0其餘位均為1(例如:7二進位制表示0111)。這樣,我們將n與n-1做按位與運算。結果為0表示n為2的整數次冪。下面是用python 的程式碼實現

def judge(num):
    result = num & (num-1)
    print(result)
    if result == 0:
        print("%d是2的整數次冪" % num)
    else:
        print("%d不是2的整數次冪" % num)

總結:這只是一個技巧,恰巧對於2這個特殊的數。能夠使用。對於普通的數不能使用。對於普通的數。在另一文章中寫出。