判斷乙個數是否是2的倍數,次冪 位運算

2021-10-03 20:06:25 字數 609 閱讀 7637

2的倍數

判斷乙個數是否是2的倍數正常我們會使用n % 2 == 0,但其實編譯器會優化成位運算(因為計算機只認識0和1)。

用就可以思考成判斷乙個二進位制數是否是2的倍數就看最後一位,如果是1就不是2的倍數,等於0就是2的倍數。那我們的問題就轉成了判斷乙個數的二進位制最後一位是否是1了。

仔細思考之後發現1這個數除了最後一位是1,其他全為0,再用上與(&)符號,

如果結果為1不是2的倍數,為0是的2的倍數。

public

boolean

ispoweroftwo

(int n)

2的次冪

判斷乙個數是否是2的次冪(2,4,8,16.。。。。),發現這些數二進位制都有乙個規律,就是最高都為1,其他全為0,那麼將這些都減1的話,所有位數剛好反過來,最高為0,其餘全為1,那我們就可以使用這個公式:(n & (n-1)) == 0,如果結果是0就是2的次冪。

public

boolean

ispoweroftwo

(int n)

判斷乙個數是否是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的整數次冪,python實現

問題 判斷乙個數是否是2的整數次冪?分析一 判斷乙個數是否是是2的整數次冪。方法和思路也很多,其中最簡單的就是,用這個數除以2用除的商再除以2,直到最後被除數為2,證明這個數是2的整數次冪。這種思路簡單,但是略顯笨重。我們採用第二種思路。分析二 由於2這個數在計算機中是乙個比較特殊的數。計算機是以二...