【知识积累】统计一个数的二进制位有几个1

package com.example.demo.algorithm;

/**
 * @Description :
 * 统计一个数的二进制位有几个1
 *
 * @Author : Darren
 * @Date : 2021 年 02 月 07 日 20:06:18
 * @since : 1.0
 */
public class J010_CountBinary {

    public static void main(String[] args) {
        int maxValue = 100000;
        int num = J001_SelectSort.generateRandom(maxValue);
        System.out.println(countBinary(num));
    }

    public static int countBinary(int num){
        int count = 0;
        while (num != 0){
            int rightOne = num & (~num + 1);
            count++;
            //如果num为负数 那么就不行 异或会把最右侧的1抹掉
            //num -= 1;
            num ^= rightOne;
        }
        return count;
    }

}

猜你喜欢

转载自blog.csdn.net/axin1240101543/article/details/113758108