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

2021-09-11 02:35:33 字數 407 閱讀 3727

與運算操作方法

2的n次冪的特點:它的所有的因子都是2,它的二進位制表示形式只有乙個1

例如       a	   0100 0000           

a-1 0011 1111

a 0100 1000

a-1 0100 0111

分別進行與運算,如果是2的n次冪,則與結果為false。即執行結果為false的數,即不是2的n次冪,ture則是2的n次冪。

class lianxi

}

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

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

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

如何判斷乙個數是否是2的n次方

2的n次方可以表示為 2 0,2 1,2 2,2 3,2 4.2 n。最直觀的思想是用1做移位操作,然後判斷移位後的值是否與給定的數相等,具體的實現 如下 public class movebyte return false public static void main string args 以...

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

當時去理解這段 num num 1 0時 將 按權與當成是 邏輯與進行運算 注意 取位址運算子和按權與得符號都是 取位址時直接符號後面加變數 如 a,b。按權與時後面需要跟乙個數,如a 1。按權與得優先順序小於 得優先順序,不要搞混!花了好長時間也沒搞懂到底是怎麼樣的運算邏輯,後來網上查了一下才知道...