當(dāng)不考慮負(fù)數(shù)時(shí),對(duì)于此題分析可知,當(dāng)輸入值小于1時(shí),此數(shù)肯定不是2的整數(shù)次冪。
當(dāng)輸入值大于一時(shí),我們可以發(fā)現(xiàn)一個(gè)規(guī)律。2的整數(shù)次冪用二進(jìn)制表示為:
2d = 10b; 4d = 100b; 8d = 1000b
二進(jìn)制首位為一,其余各位均為零。
所以我們可以通過判斷輸入值轉(zhuǎn)換為二進(jìn)制時(shí)首位為一,其余各位為0,這樣就能保證輸入值為2的整數(shù)次冪。
但是這樣做又過于繁瑣,我們可以只判斷二進(jìn)制數(shù)中最后一次出現(xiàn)“1"的位置,使用string,lastindexof();方法即可。
而且我們還可以發(fā)現(xiàn)此規(guī)律同樣適用于輸入1的情況。
那么簡潔的代碼就這樣產(chǎn)生了。
1
2
3
4
5
6
7
8
9
|
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 判斷一個(gè)數(shù)是否為2的整數(shù)次冪方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。
原文鏈接:https://blog.csdn.net/m0_38044247/article/details/71150587