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

2021-09-26 06:31:00 字數 571 閱讀 7987

問題:判斷乙個數是否是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的整數次冪

title iscompletepower description 判斷乙個數是否是2的整數次冪 判斷原理 2的整數次冪,都是以1開頭,其餘其餘位為0的形式 例如 8的二進位制形式為 1 0 0 0 這樣的乙個數進行 1後,所得數的各位都會和原數的各位成反碼 例如 7的二進位制形式位 0 1 1 1...

java 判斷乙個數是否是2的整數次冪

有一道演算法題是這樣的,求乙個數是否是2的整數次冪。剛開始我的演算法是這樣寫的 讓這個數每次都除以2,然後再乘以2,看這兩個數是否相等,不相等就返回false。放在迴圈裡面讓它從頭除到尾。public boolean ispower intnumber else else return true 用...

判斷乙個數是2的整數次冪

private static boolean ispoweroftwo int val 或者private static boolean ispoweroftwo int val 例如 val 8,用二進位制表示 1000 val 1 7,用二進位制表示 0111 val val 1 0 原理 在二...