一个整数二进制表示中1的个数

  • Post author:
  • Post category:其他


题目描述:

输入一个整数,输出该整数二进制表示中1的个数,其中负数用补码表示

算法思想:

把一个整数减去1,在与原数做与运算,会把该整数最右边的1变成0(例如原数1100,减1得1011,做完与运算后的1000),那么一个整数表示中有多少个1,就可以进行多少次这样的操作

public class Main {
    public static int NumberOf1(int n){
        int count = 0;
        while(n != 0){
            count++;
            n = (n-1)&n;
        }
        return count;
    }
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int N =sc.nextInt();
        System.out.println(NumberOf1(N));
    }
}



版权声明:本文为weixin_43224539原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。