判斷一個數是否是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這個特殊的數。能夠使用。對於普通的數不能使用。對於普通的數。在另一文章中寫出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章