欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

计算一个数的二进制数中1的个数

程序员文章站 2022-06-03 12:17:15
...
package test24;
import java.util.Scanner;
public class Tesk {
public static void main(String[] args) {
    System.out.println("请输入一个数: ");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt();
    int count = 0;
    for(int i = 0;i < 32;i++){
        if(((num>>i) & 1) == 1){
            count ++;
        }
    }
    System.out.println("1的个数是:"+count);
}
}

上面这个代码可以计算出正确结果,但是当输入数较小时,他做了很多次无用计算,效率太低,所以我们做以下改进:
计算一个数的二进制数中1的个数
我们每次让 n & n-1 ,与 的次数就是 1 的个数

package test24;
import java.util.Scanner;
public class Tesk {
public static void main(String[] args) {
    System.out.println("请输入一个数: ");
    Scanner input = new Scanner(System.in);
    int num = input.nextInt();
    int count = 0;
    while(num != 0){
            count++;
            num = num & (num - 1);
        }
        System.out.println("该数的二进制*有"+count+"个1");
    }
}

结果展示:
计算一个数的二进制数中1的个数

相关标签: java