在 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/