/*
请实现一个函数,输入一个整数,输出该数二进制表示中1的个数.
例:9的二进制表示为1001,有2位是1
解法一: 用位运算,
知识点一: 二进制之间的减法运算
例如 1100 - 0001 = 1011
知识点二: 将num - 1后,再与num进行与运算,会将低位开始最低位的1消掉
例如 1100 进行减法,从上往下看
-0001
-----
1011
&1100
-----
1000 如果不为0,则-1后继续进行与运算,count++
-0001
-----
0111 进行与运算
&1000
-----
0000 结果为0,结束循环 ,count++
*/
import java.util.Scanner;
public class 二进制中1的个数_法三 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int count = 0;
System.out.println(Integer.toBinaryString(num));
while (num != 0) {
num = ((num - 1) & num);
count++;
}
System.out.println(count);
}
}
网友评论