java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现
這個(gè)題目會(huì)有多個(gè)解法:
需要判斷n的二進(jìn)制有幾個(gè)1
first:通過(guò)n向右移位&1,如果n的最后為1,那么與1結(jié)果為1,(相信大家都會(huì)與運(yùn)算,hashmap就是用與運(yùn)算)以此來(lái)實(shí)現(xiàn),循環(huán)判斷有多少個(gè)1,結(jié)束條件為n=0;
second:上述方法有一個(gè)缺陷,就是當(dāng)n為有符號(hào)數(shù)字時(shí),才用n==0的結(jié)束條件會(huì)發(fā)生死循環(huán),那么我們可以通過(guò)移位1來(lái)實(shí)現(xiàn),也就是有每次比較去把1向左移,一次來(lái)比較
前兩種屬于常規(guī)做法,下面來(lái)說(shuō)一種技巧性的做法
比如:n=1001,每次將n-1,那么第一次就是1000,使用n&(n-1)→1001&1000=1000,這是第一次計(jì)算,第二次1000&0111=0
兩次運(yùn)算,而1001中有兩個(gè)1;? ?如果看不懂的可以自己寫(xiě)寫(xiě),感受下,就能體會(huì)了;
上代碼:
public void showOne(int n){
if(n==0){
System.out.println("0");
return;
}
int count=0;
while(n!=0){
count++;
n=n&(n-1);
}
System.out.println(count);
}
出處來(lái)自劍指offer
總結(jié)
以上是生活随笔為你收集整理的java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 时间序列预测算法——DeepAR
- 下一篇: (二)NI采集卡应用学习:使用NI MA