判斷一個整數是否爲2的次冪

當不考慮負數時,對於此題分析可知,當輸入值小於1時,此數肯定不是2的整數次冪。

當輸入值大於一時,我們可以發現一個規律。2的整數次冪用二進制表示爲:

2d = 10b;  4d = 100b; 8d = 1000b

二進制首位爲一,其餘各位均爲零。

所以我們可以通過判斷輸入值轉換爲二進制時首位爲一,其餘各位爲0,這樣就能保證輸入值爲2的整數次冪。

但是這樣做又過於繁瑣,我們可以只判斷二進制數中最後一次出現“1"的位置,使用String,lastIndexOf();方法即可。

而且我們還可以發現此規律同樣適用於輸入1的情況。

那麼簡潔的代碼就這樣產生了。

[java] view plain copy
  1. public static boolean isPowerOfTwo(int n) {  
  2.         String str = Integer.toBinaryString(n);  
  3.         if(n < 1)  
  4.             return false;  
  5.         else if(str.lastIndexOf("1") == 0)  
  6.             return true;  
  7.         else  
  8.             return false;  
  9.     } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章