美文网首页算法很美
二进制中1的个数_三

二进制中1的个数_三

作者: FiveZM | 来源:发表于2019-12-13 21:33 被阅读0次

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

        本文链接:https://www.haomeiwen.com/subject/byeqnctx.html