问题:
给定一个数字,求其二进制表示中1的个数。
思路:
假设给定数为n, 判断n&1的结果,如果为1,证明这个数的二进制表示末位为1,则count+1,然后n右移一位递归调用这个方法;如果不为1,则count计数不变,n右移一位递归调用这个方法,直到右移后的这个数为0。
代码实现:
public class Test {
public static int count = 0;
public static void main(String[] args) {
System.out.println(getOne(90));
}
public static int getOne(int n) {
int temp = n;
if((temp&1) == 1) {
count++;
getOne(temp>>1);
} else if((temp&1) == 0 && temp !=0) {
getOne(temp>>1);
}
return count;
}
}