题目描述:
输入一个整数,输出该整数二进制表示中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 版权协议,转载请附上原文出处链接和本声明。