题目:给定一个整数,求这个整数转换成二进制以后,所有位上1的个数(数字大小不超过32位数字的范围)。比如8这个整数,转换成二进制是00001000,那么就是输出1。
public class Demo5 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNextInt()) {
int num = in.nextInt();
int res = 0;
while (num != 0) {
res += num & 1; // 按位与,1和一个整数按位与操作,只影响最后一位,只有最后一位位是1才会加1.
num >>>= 1; // 右移一位,下次循环判断下一个位置。
}
System.out.println(res);
}
}
}
如果大家需要视频版本的讲解,欢迎关注我的B站: