求一個數的二進位制表示中1的個數和0的個數
阿新 • • 發佈:2019-01-07
在我複習的過程中,很多面試題,甚至筆試題中,都用到了多次求一個整數的二進位制表達中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;
}