问题:
给定一个数字,求其二进制表示中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;
}
}
本文介绍了一种解决给定数字二进制表示中1的个数问题的思路。通过位操作,当数字n与1进行按位与(&)运算后,根据结果判断是否为1,来递归计算1的总数,每次操作后将数字右移一位,直至数字变为0。

599

被折叠的 条评论
为什么被折叠?



