求一个数的二进制表示中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;
	}

你可能感兴趣的:(Java)