java 判斷一個(gè)數(shù)是否為2的整數(shù)次冪方法
當(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)制首位為一,其余各位均為零。
所以我們可以通過(guò)判斷輸入值轉(zhuǎn)換為二進(jìn)制時(shí)首位為一,其余各位為0,這樣就能保證輸入值為2的整數(shù)次冪。
但是這樣做又過(guò)于繁瑣,我們可以只判斷二進(jìn)制數(shù)中最后一次出現(xiàn)“1"的位置,使用String,lastIndexOf();方法即可。
而且我們還可以發(fā)現(xiàn)此規(guī)律同樣適用于輸入1的情況。
那么簡(jiǎn)潔的代碼就這樣產(chǎn)生了。
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ù)次冪方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
代理角色java設(shè)計(jì)模式之靜態(tài)代理詳細(xì)介紹
查了好多資料,發(fā)現(xiàn)還是不全,干脆自己整理吧,至少保證在我的做法正確的,以免誤導(dǎo)讀者,也是給自己做個(gè)記錄吧!2013-05-05java實(shí)現(xiàn)哈夫曼壓縮的實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)哈夫曼壓縮的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-07-07解決Mybatis-Plus操作分頁(yè)后數(shù)據(jù)失效問(wèn)題
這篇文章主要介紹了解決Mybatis-Plus操作分頁(yè)后數(shù)據(jù)失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Lombok使用@Tolerate實(shí)現(xiàn)沖突兼容問(wèn)題
這篇文章主要介紹了Lombok使用@Tolerate實(shí)現(xiàn)沖突兼容問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08教你用Springboot實(shí)現(xiàn)攔截器獲取header內(nèi)容
項(xiàng)目中遇到一個(gè)需求,對(duì)接上游系統(tǒng)是涉及到需要增加請(qǐng)求頭,請(qǐng)求頭的信息是動(dòng)態(tài)獲取的,需要?jiǎng)討B(tài)從下游拿到之后轉(zhuǎn)給上游,文中非常詳細(xì)的介紹了該需求的實(shí)現(xiàn),需要的朋友可以參考下2021-05-05