输入一个long类型的数值, 求该数值的二进制表示中的1的个数 .
//把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。 import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner sca = new Scanner(System.in); long n = sca.nextLong(); int count = 0; while(n!=0) { count++; n = n & (n-1); } System.out.println(count); } }
import java.util.*; public class Main { public static void main(String[] argus) { Scanner scanner=new Scanner(System.in); while(scanner.hasNextLong()) { long number=scanner.nextLong(); System.out.println(NumberOf1(number)); } } public static int NumberOf1(long n) { int time=0; while (true) { if(n==0) break; time++; n = (n - 1) & n; } return time; } }
import java.util.Scanner; /** * @Author: Lee * @Date: 2019/8/8 23:42 * @Description: */ public class Main { public static void main(String[] args) { new Main().process(); } public void process() { Scanner input = new Scanner(System.in); long source = input.nextLong(); ten2TwoProcess(source); } public void ten2TwoProcess(long source) { int num = 0; String string = Long.toBinaryString(source); char[] chars = string.toCharArray(); for (int i = 0; i < chars.length; i++) { if (chars[i] == '1') { num++; } } System.out.println(num); } }