java - 将数字从二进制转换为十进制 最高有效位 (MSB) 导致不良结果

标签 java recursion

在 main 方法中,当我尝试将二进制数作为 Integer 传递时,当 1 给出所需结果时最高有效位。但是当我将它更改为 0 时,它会产生意想不到的结果。 作为补救措施,我必须将 string 转换为 integer 然后传递它。

public class BinaryToDecimal {


   static int BinaryNum(int n, int p){
        if(n==0){
            return 0;
        }
        else{
            return (int)((n%10)*(Math.pow(2, p))+BinaryNum(n/10,p+1));
        }
    }
    public static void main(String[] args) {
        System.out.println(BinaryNum(Integer.parseInt("001010"), 0));
    }

}

最佳答案

为什么不使用内置的 Integer#parseInt(s, radix)方法:

Integer.parseInt("001010", 2)

2 是这里数字的基数(基数),表明它是一个二进制(基数为 2)数。它会自动将 001010 二进制数转换为 10 十进制值。

关于java - 将数字从二进制转换为十进制 最高有效位 (MSB) 导致不良结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58374901/

相关文章:

java - 尝试从 Android 数据库中删除但获得空对象引用

java - 递归替换所有java

c++使用指针和状态机构建递归树

python - 如何在线程内运行递归函数?

java - 使用递归查找最大乘积

php - 在递归函数 php 中重新启动第一个循环

java - 使用许多方法实现接口(interface) = 巨大的类。模式来拯救?

java - 如何根据用户从下拉菜单中选择的参数对 Java 对象列表进行排序?

java - Java Swing 中背景的十六进制颜色是什么?

c++ - 带有 sizeof 的可变参数模板递归...,但编译错误 : no matching function