使用递归将二进制整数转换为十进制整数

编码Protogen

我无法让这种将整数从二进制转换为十进制的方法正常工作。我发现的主要问题是,对于以 0 结尾的二进制数,程序会忽略最后一个 0。例如,如果我输入 1010,程序将返回 5 而不是 10。以下是我进行此转换的方法。

public int toDecimal(int inBase2){
    int num = 0;
    if(inBase2 < 0){
      num = -1;
      return num;
    }
    if(inBase2 == 0 && num == 0){
      return num;
    }else{
      num = inBase2 % 10 * (int)(Math.pow(2, Math.log10(inBase2)));
    return num + toDecimal(inBase2 / 10);
    }
  }

我将如何修复程序以使其能够正确读取二进制整数中的最后一个 0?

产生共鸣

您正在以错误的方式进行计算。二进制数中的最低有效数字被视为最高有效数字。如此有效,1010 返回 0101 的结果。现在,您处理的第一个数字(在个位)乘以Math.pow(2, Math.log10(inBase2)),并赋予最大权重。相反,您应该将递归函数的结果相乘,这样后面的调用(代表更高值的数字)就会相乘更多。示例

public int toDecimal(int inBase2){
    int num = 0;
    if(inBase2 < 0){
        num = -1;
        return num;
    }
    if(inBase2 == 0 && num == 0){
        return num;
    }else{
        num = inBase2 % 10;
        return num + 2 * toDecimal(inBase2 / 10);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用长整数值C将十进制转换为二进制

将列表整数类型的二进制数转换为十进制数?

整数解析不适用于将二进制转换为十进制

将非整数十进制数字转换为二进制

将字符串二进制转换为整数十进制

在 C 中使用递归将二进制转换为十进制

如何使用递归函数将十进制数转换为二进制数?

将十进制/整数转换为二进制-如何以及为什么以这种方式工作?

使用递归将二进制数字的字符串转换为十进制数字...

使用xxd将整数转换为二进制

使用递归将整数转换为二进制数

使用python可视化将十进制转换为二进制

如何使用<bitset>库将二进制转换为十进制?

使用按位运算符将十进制转换为二进制

如何使用for循环将二进制转换为十进制?

使用CharAt()和length()将二进制转换为十进制

使用python中的函数将十进制数转换为二进制数

使用堆栈链表将十进制转换为二进制时出错

Elixir二进制模式的整数匹配或将整数转换为二进制

如何在Elixir中将二进制转换为base10(十进制)整数

在MATLAB中将十进制整数转换为二进制(最多20位)的自定义函数

十进制转换为二进制

使用递归的二进制到十进制

将整数转换为十进制

如何使用二进制补码手动将十六进制转换为十进制

将整数转换为4位二进制

Python 将二进制字符串转换为二进制整数

使用递归的十进制到二进制转换

如何在使用朴素递归将十进制数转换为二进制数时捕获第一个数字?