二进制中1的个数


题目

请实现一个函数,输入一个整数,输出该数二进制表示中1的个数

答案

public class T1_4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        //打印2进制
        System.out.println(Integer.toString(N,2));
        int count = 0;
        //按位比对
        //整数为32位
        for (int i = 0; i < 32; i++) {
            //每一次将1左移对应的位数,在进行与运算,如果N在该位上是1,则结果为1,再与后面的1<<i进行==时结果就为true
            if ((N&(1<<i))==(1<<i)){
                count++;
            }
            /**
             * 举例:
             *      如果第三次循环,即1左移3位跟N对比
             *      假定N前4位为1001,即为1001与1000(1左移三位的结果)进行与运算,结果为1000
             *      该结果再与后面的1左移三位的值进行==,结果为true,所以count++
             */
        }
        System.out.println(count);
    }
}

文章作者: WJF
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WJF !
  目录