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

全部评论

相关推荐

04-29 22:35
门头沟学院 Java
牛友说改了名字能收到offer:旧图新发查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
03-28 13:48
hory权:校招vip纯神人了,还说自己是什么师范大学的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务