public class 二进制中1的个数 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); System.out.println(Integer.toString(n,2)); int count1 = 0; //法一:比对每一位,将1移位,如何那一位是1,那么与(&)出来的结果就是1 for (int i = 0; i < 32; i++) { if((n&(1<<i))==(1<<i)){ count1++; } } System.out.println(count1); int count2 = 0; //法二:二进制往右移,“1”不动 for (int i = 0; i < 32; i++) { if((1&(n>>i))==1){ count2++; } } System.out.println(count2); //法三:将 n 与 n-1 做 与 运算,直到 n 变成 0 int count3 = 0; while (n!=0){ n = (n-1)&n; count3++; } System.out.println(count3); } }
09-13
296
09-15
197
09-14
1010
09-12
216
07-17