java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现
生活随笔
收集整理的這篇文章主要介紹了
java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這個題目會有多個解法:
需要判斷n的二進制有幾個1
first:通過n向右移位&1,如果n的最后為1,那么與1結果為1,(相信大家都會與運算,hashmap就是用與運算)以此來實現,循環判斷有多少個1,結束條件為n=0;
second:上述方法有一個缺陷,就是當n為有符號數字時,才用n==0的結束條件會發生死循環,那么我們可以通過移位1來實現,也就是有每次比較去把1向左移,一次來比較
前兩種屬于常規做法,下面來說一種技巧性的做法
比如:n=1001,每次將n-1,那么第一次就是1000,使用n&(n-1)→1001&1000=1000,這是第一次計算,第二次1000&0111=0
兩次運算,而1001中有兩個1;? ?如果看不懂的可以自己寫寫,感受下,就能體會了;
上代碼:
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);
}
出處來自劍指offer
總結
以上是生活随笔為你收集整理的java 判断数字二进制有几位_判断一个二进制数字有多少个1----java实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 时间序列预测算法——DeepAR
- 下一篇: (二)NI采集卡应用学习:使用NI MA