是否可以仅使用循环将二进制转换为十进制

时间:2018-10-15 13:11:47

标签: java

嗨,我只是想知道是否可以仅使用循环而不使用其他高级代码将二进制数转换为十进制数。下面的代码只是一个将十进制数转换为二进制的程序,但我希望仅使用循环就可以将二进制转换为十进制。

ID

3 个答案:

答案 0 :(得分:0)

有一个内置函数:Integer.toBinaryString()

答案 1 :(得分:0)

注意:

您也可以将该代码泛化为十进制表示形式。

由于您只需要基本思想,因此您也可以接受用户的输入,因此我省略了这些内容。

此外,由于没有特定的语言是首选,所以我选择了python。

您可以通过简单的for循环进行操作:

b="111"    #LET US ASSUME THE BINARY NUMBER IS "111"
bb=list(b)
for i in range(0,len(bb)):
    bb[i]=int(bb[i])
d=0
for i in range(0,len(bb)):
    d=d+(bb[i])*(2)**(i)
print(d)

希望有帮助。

答案 2 :(得分:0)

以下代码将执行操作。这是我所做的,将二进制字符串作为输入在"."上进行分割,因为我们也在处理小数。转到第一个分割部分(即整数部分),然后从中计算出整数值。如果有,请转到第二部分(分数部分),计算分数值,然后将两者相加。

 private static void printDecimal(String binaryString) {
        float result = 0;
        String[] StringArr = binaryString.split("\\.");
        if (StringArr.length > 2) {
            System.out.println("Invalid Binary Number");
        } else {
            String IntegerPart = StringArr[0];
            int c = 0;
            for (int i = IntegerPart.length() - 1; i >= 0; i--) {
                result += Integer.valueOf("" + IntegerPart.charAt(i)) * Math.pow(2, c);
                c++;
            }
            if (StringArr.length == 2) {
                String fractionPart = StringArr[1];
                for (int i = 0; i < fractionPart.length(); i++) {
                    result += Integer.valueOf("" + fractionPart.charAt(i)) * Math.pow(2, -1 * (i + 1));
                }
            }
        }
        System.out.println(result);
    }