第一种方法:循环,按位与上每一位(效率低)
import java.util.Scanner; public class TextOne { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int count = 0; for (int i = 0; i < 32; i++) { if (((n >> i) & 1) == 1) { count++; } } System.out.println("count:"+count); } }
第二种方法,按位与上(n-1),效率较高
import java.util.Scanner; public class TextOne { public static void main (String[]args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int count = 0; while (n != 0) { n = n & (n - 1); count++; } System.out.println("count:"+count); } }