當不考慮負數時,對于此題分析可知,當輸入值小于1時,此數肯定不是2的整數次冪。
當輸入值大于一時,我們可以發現一個規律。2的整數次冪用二進制表示為:
2d = 10b; 4d = 100b; 8d = 1000b
二進制首位為一,其余各位均為零。
所以我們可以通過判斷輸入值轉換為二進制時首位為一,其余各位為0,這樣就能保證輸入值為2的整數次冪。
但是這樣做又過于繁瑣,我們可以只判斷二進制數中最后一次出現“1"的位置,使用String,lastIndexOf();方法即可。
而且我們還可以發現此規律同樣適用于輸入1的情況。
那么簡潔的代碼就這樣產生了。
public static boolean isPowerOfTwo(int n) { String str = Integer.toBinaryString(n); if(n < 1) return false; else if(str.lastIndexOf("1") == 0) return true; else return false; }
以上這篇java 判斷一個數是否為2的整數次冪方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選