求一個數的二進制表示中1的個數和0的個數

在我複習的過程中,很多面試題,甚至筆試題中,都用到了多次求一個整數的二進制表達中1的個數或者0的個數,網上的資料比較亂,我在此做個小記錄,算是自己的一點總結,也希望對大家有幫助!

1.1 求二進制數中 1 的個數(java版——算法轉換)
public int getNumOfOne_1(int num){
		int count = 0;
		while(num != 0){
			num = num & (num - 1);
			count++;
		}
		return count;
	}
1.2 求二進制數中 1 的個數(java版——普通解法)
public int getNumOfOne_2(int num){
		int count = 0;
		for(int i = 31; i > 0; i--){				
			if((num&1) == 1)				
				count++;
			num >>= 1;							
		}		
		return count;
	}
2.1 求二進制數中 0 的個數(C語言版—算法轉換)
int numOfZero(x){
	while(x+1){
		count++;
     	x = x|(x+1); 
     }
     return count;
}
2.2 求二進制數中 0 的個數(java語言版—普通解法)
public int getNumOfZero_2(int num){
		int count = 0;
		for(int i = 31; i > 0; i--){	
			if(num == 0)
				break;
			else{
				if((num&2) == 0)
					count++;
				num >>=1;
			}				
		}		
		return count;
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章