1. 程式人生 > >求一個數的二進位制表示中1的個數和0的個數

求一個數的二進位制表示中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;
	}