题解 | #查找输入整数二进制中1的个数#
查找输入整数二进制中1的个数
https://www.nowcoder.com/practice/1b46eb4cf3fa49b9965ac3c2c1caf5ad
例如:数字 5 的二进制表示 101,二进制表示示例:
64 32 16 8 4 2 1
0 0 0 0 1 0 1
那么可以用二进制的方式来做,“...”表示前面都是 0
... 101
& ... 001
----------------
001 count++
然后右移动 1 位:
... 010 >>> 1 (丢弃不要了)
& ... 001
----------------
000 不变
再向右边移动 1 位:
... 001 >>> 0 (丢弃不要了)
& ... 001
----------------
001 count++
再移动后就等于0了。结束循环输出 count。
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意题目要求,需要多组输入输出,则用 hasNextInt
while(in.hasNextInt()) {
int num = in.nextInt();
// 统计 1 的数量
int count = 0;
while(num > 0) {
// 按位与,只要等于1,则说明此位为1,累加
if((num & 1) == 1) {
count ++;
}
// 无符号右移,直到 num==0
num = num >>> 1;
}
System.out.println(count);
}
}
}
汤臣倍健公司氛围 420人发布

