将二进制数转换为十进制数的 Java 程序。输入是一串零和一

标签 java binary decimal converters

我必须创建一个 java 程序,使用以下步骤将二进制转换为十进制。作为新手,我做了一些事情,但我不知道我做错了什么或如何继续。

public class BinaryToDecimal {
public static void main(String args[]){
    long sum = 0;
        int result;
        String s = "1001010101011010111001011101010101010101";
        for(int i = s.length()-1; i <= 0; i--){
            result = (int)Math.pow(2, i);
            if(s.charAt(i) == '1')
                sum=sum + result;
        }
        System.out.println(sum);
    }
    }

使用循环读取(charAt())输入字符串中的每个数字(0/1 char),从右到左扫描;

使用循环构建所需的 2 的幂;

用条件语句分别处理0和1;

使用简单的输入进行调试,例如1、10、101,并在循环中打印中间值。

用你的程序求出下列二进制数的十进制值:

1001010101011010111001011101010101010101

最佳答案

仅当您的十进制值最多为 2147483647 或 Java 中 int 的最大值时才执行此操作。如果您不知道,只需检查字符串的长度。如果它小于或等于 32,即 4 个字节,那么你可以使用 parseInt。:

int decimalValue = Integer.parseInt(s, 2);

引用HERE有关 Integer.parseInt() 的更多信息;

但如果它更多,你可以使用你的代码。我修改了你的循环,这是你的问题所在:

 String s = "1001010101011010111001011101010101010101";
 long result = 0;
 for(int i = 0; i < s.length(); i++){
    result = (long) (result + (s.charAt(i)-'0' )* Math.pow(2, s.length()-i-1));
  }
    System.out.println(result);

关于将二进制数转换为十进制数的 Java 程序。输入是一串零和一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28032458/

相关文章:

java - 为什么 clone() 方法不能正常工作?

java - 当 socket.close() 抛出 Java 时我能做些什么?

java - 如果catch抛出异常,我该如何处理?

java - 如何修复此方法,将字符串中的数字转换为显示正确的小数位数?

java - 从另一个线程调用时变量为空

vb.net - 如何将十进制数转换为固定位数的二进制数

需要对按位非 (~) 运算符进行说明

java - 如何让我的二进制到十进制转换程序也读取 0?

python - MySQL数据库更新到小数点

Javascript 添加两位小数