/**
* 判斷一個數中喲多少個1
* 使用移位,int爲32位,通過移位判斷
*/
public static int count1(int n){
int count = 0;
int i = 0;
do{
if((n&1) == 1){
count ++;
}
i ++;
n >>= 1;
}while (i<32);
return count;
}
/**
* 使用算法:如n=9 (二進制寫法1001) ,則n-1=8 (二進制寫法1000),
* 1001 & 1000 後結果爲1000,即去掉了最右端的1,
* 1000 再& 0111 結果爲0000,如此統計循環的次數即可
* @param n
* @return
*/
public static int countBits(int n) {
int count = 0;
while (n!=0){
n &= (n-1);
count ++ ;
}
return count;
}
public static void main(String[] args) {
int val = 58585858;
System.out.println(val+"包含1的數量爲:"+count1(val));
System.out.println(val+"包含1的數量爲:"+countBits(val));
}
n的二進制包含多少個1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.