题目:给定一个整数,求这个整数转换成二进制以后,所有位上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站: