如何證明乙個數是2的冪次方

2021-09-24 11:07:11 字數 311 閱讀 1007

乙個數是否是2的冪次方,比較常用的是遞迴和移位運算進行判斷。遞迴演算法的思想很簡單,就是不斷的模上2去判斷。

如果乙個數是2的冪,那麼它的二進位制表示中就只有一位1,例如:10000,1000,100等等。所以如果對數字1進行移位操作,總會在移到某個位的時候和這個數相等。這就是移位判斷的思想。

因為二進位制表示的2的冪次方數中只有乙個1,後面跟的是n個0; 因此問題可以轉化為判斷1後面是否跟了n個0。如果將這個數減去1後會發現,僅有的那個1會變為0,而原來的那n個0會變為1;因此將原來的數與上(&)減去1後的數字,結果為零。

(num & num - 1) == 0

python 判斷乙個數是否是2的冪次方

乙個數是否是2的冪次方,比較常用的是遞迴和移位運算進行判斷。1.遞迴演算法的思想很簡單,就是不斷的模上2去判斷。2.如果乙個數是2的冪,那麼它的二進位制表示中就只有一位1,例如 10000,1000,100等等。所以如果對數字1進行移位操作,總會在移到某個位的時候和這個數相等。這就是移位判斷的思想。...

判斷乙個數是否是 2 3 4的冪次方

2的幾次冪 思路 在二進位制中 2 n形式如下 2 1 2 10 1 01 2 2 4 100 3 011 2 3 8 1000 4 0111 2 4 16 10000 5 01111 def ispoweroftwo n int bool if n 0 return false else retu...

判斷乙個數是否為2的次方冪

給定乙個整數n,判斷它是否為2的次方冪。思路 2,4,8,16,32.都是2的n次冪 轉換為二進位制分別為 10 100 1000 10000 100000 這些數減1後與自身進行按位與,如果結果為0,表示這個數是2的n次冪 01 011 0111 01111 011111 10 01 0 100 ...