二进制中1的个数_三

/*
请实现一个函数,输入一个整数,输出该数二进制表示中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);
    }
}

你可能感兴趣的:(二进制中1的个数_三)