计算一个数的二进制数中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);
}
}
上面这个代码可以计算出正确结果,但是当输入数较小时,他做了很多次无用计算,效率太低,所以我们做以下改进:
我们每次让 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");
}
}
结果展示: