题解 | #查找输入整数二进制中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); } } }