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

2021-07-27 04:55:16 字數 540 閱讀 4959

package aboutmove;

//判斷是否為2的次方

public class aboutmove

return false;

} public static void main(string args)

}

注意點千萬不能在第15行寫成n>>=1;因為6/2=3;3/2=1這是整形

時間複雜度為o(logn)

演算法改進,由於乙個數是2的n次方可以轉換為這個數對應的二進位制表示中是否只有一位為1.如果乙個數的二進位制表示只有一位是1,例如n=0010000,那麼num-1的二進位制表示為num-1=0001111,由於num與num-1二進位制表示中每一位都不相同,因此num&(num-1)的運算結果為0,可以利用這種方法來判斷乙個數是否為2的n次方。

改進後**

public static boolean changejudge(int n)

public static void main(string args)

用python判斷乙個數是否為2的n次方

2true我的 如下 n int input if n n 1 0 print true else print false 我的思路 看到這個問題首先想到的就是迴圈來做,應該能做出來,不過要是數字較大估計記憶體會溢位。轉換為二進位制,轉換幾個看看規律 for i in range 0 10 prin...

判斷乙個數是否是2的N次方

對於判斷乙個數是否為2的n次方問題,通常想到的最為直接的辦法就是對這個數不斷對2取餘,為0就將該數變為該數除以2,直到最後該數為1為止。void judge int n printf no n return 不過上面的方法並不是較好的方法,其實還有更為簡潔高效的方法 乙個整數,若是2的n次方,有沒有...

判斷乙個數是否為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 ...