Java 实现 输入一个整数字(可以为正数或负数),求其在计算机中存储时1的个数。

2025-03-24 04:17:11
推荐回答(5个)
回答1:

package com.baidu.sep28;

import java.util.Scanner;

public class CountOne_2

{

public static void main(String[] args) 

{

int input = 0;

Scanner in = new Scanner(System.in);//获取控制台输入

do{

System.out.println("请输入一个整数(可以为正数或负数):");

input = in.nextInt();//获取出入 并 传 给input   

     System.out.println("计算机中存储时1的个数为:"+getOneNumber (input));

}while(input!=0);//输入0 时  结束   (目的是为了 可以多次输入)

}

private static int getOneNumber(int input ) 

{

String binary = Integer.toBinaryString(input);//将输入的 整数转换成二进制 字符串形式

String new_string = binary.replaceAll("0", "");//将binary中的0 全部替换成空

return new_string.length();//将替换后 只有1的字符串个数 返回

}

}

运行 效果

回答2:

统计bit上为1的个数最快的还是用汇编指令,一条指令就出来了。
发现1.5版起java也内置了
public int getOneNumber (int inputNumber){
return Integer.bitCount(inputNumber);
}

回答3:

package com.baidu.sep28;

import java.util.Scanner;

/**java 实现 输入一个整数字(可以为正数或负数),求其在计算机中存储时1的个数。

 * 

 */

public class CountOne {

public static void main(String[] args) 

{

int input = 0;

Scanner in = new Scanner(System.in);//获取控制台输入

do{

System.out.println("请输入一个整数(可以为正数或负数):");

input = in.nextInt();//获取出入 并 传 给input   

     System.out.println("计算机中存储时1的个数为:"+getOneNumber (input));

}while(input!=0);//输入0 时  结束   (目的是为了 可以多次输入)

}

private static int getOneNumber(int input ) 

{

int count = 0;//出现的次数  初始化为0

String binary = Integer.toBinaryString(input);//将输入的 整数转换成二进制 字符串形式

int index = -1;//将 索引初始化为-1

while((index =binary.indexOf("1",index+1))!=-1) 

{

// 获取 : binary( 整数转换成二进制 字符串)从 index+1 角标开始(包含 index+1)   第一次出新1 的索引 并赋值给index

count ++;//计数器 加一

}

return count;

}

}

回答4:

String b = Integer.toBinaryString(inputNumber);
String x = b.replaceAll("1","");
return b.length() - x.length();

回答5:

??