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

2021-07-03 09:39:25 字數 752 閱讀 9368

有一道演算法題是這樣的,求乙個數是否是2的整數次冪。

剛開始我的演算法是這樣寫的:

讓這個數每次都除以2,然後再乘以2,看這兩個數是否相等,不相等就返回false。放在迴圈裡面讓它從頭除到尾。

public

boolean

ispower(

intnumber)

else

else

}return

true;}

}用這種思維寫應該是正常的,可能大多數第一反應都會這麼想,但是稍微想想,也可以改進一下,把乘除運算換成移位運算:

public

boolean

ispower(

intnumber)  

else

else

}return

true;}

} 這種寫法看似優化了,但是總覺得有迴圈在裡面不夠優化,一次一次的移,不如一次就移到位,不用加迴圈在裡面,把十進位制數轉化成2進製數:

public

boolean

ispower(

intnumber)  

else

else}}

如果有前面的思維,那麼也可以這樣寫:

public

boolean

ispower(

intnumber)  

else

else}}

因為乙個數如果是2的整數冪,那麼它的2進製表示裡面肯定只有乙個1, 並且是最高位,當然不考慮負數。

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

與運算操作方法 2的n次冪的特點 它的所有的因子都是2,它的二進位制表示形式只有乙個1 例如 a 0100 0000 a 1 0011 1111 a 0100 1000 a 1 0100 0111 分別進行與運算,如果是2的n次冪,則與結果為false。即執行結果為false的數,即不是2的n次冪,...

判斷乙個數是否是回文數

題目 定義回文數的概念如下 如果乙個非負數左右完全對應,則該數是回文數,如 121,22 如果乙個負數的絕對值左右完全對應,則該數是回文數,如 121,22 public static void main string args printrandm arr,3 1 5 4 system.out.p...

判斷乙個數是否是質數

乙個數如果可以進行因數分解,那麼分解的兩個數一定是乙個小於等於sqrt n 乙個大於等於sqrt n 因此遍歷到sqrt n 即可。因為如果sqrt n 左側找不到因數,右側也一定找不到因數。中心思想 遍歷n是否能被2到sqrt n 之間的數整除,如果不能則為質數。import math defis...