题解 | #求int型正整数在内存中存储时1的个数#

求int型正整数在内存中存储时1的个数

http://www.nowcoder.com/practice/440f16e490a0404786865e99c6ad91c9

复习一下进制转换API:

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int cnt = 0;
        String str = Integer.toBinaryString(num);
        for(int i = 0; i < str.length(); i++){
            if(str.charAt(i) == '1')
                cnt++;
        }
        System.out.print(cnt);
    }
}

顺便看到一位大佬的位运算做法,放在这里以供学习: 原文枫火蓮天

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();    //读取数字
        int n = 0;    //计数变量
        for(int i=0; i < 32; i++){
            if((num&1) == 1)    //如果末位为1则计数
                n++;
            num = num >>> 1;    //无符号右移
        }
        System.out.println(n);
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务