求解一个无符号整数中1的个数
思路:
1:采用取模方法求解
2:移位运算求解
3:java内置函数 bitCount()
代码实现:
(1)取余
int bitCount(int n){
int k;
if(n==0)//如果n=0返回0
return 0;
int count =0;
while(n>=1){
k=n%2;//取模运算
if(k==1)
count++;//记录1的个数
n=n/2;
}
return count;
}
(2):移位
public int bitCount(int n) {
int k=0;
while(n!=0){
k+=n&1;//n和1与运算,1&1=0,1&0=0,n&与计算最后一位是否为1
n=n>>>1;//n向右移动一位,110>>>1 => 11
}
return k;
}
(3)java内置库函数
public int countBit(int n) {
return Integer.bitCount(n);
}