使用CharAt()和length()的二进制到十进制

时间:2014-05-16 14:09:00

标签: java binary binary-data

我编写了一个将二进制转换为十进制的程序,但我想知道如何在不使用Math.pow()和仅使用方法charAt()和length()

的情况下执行此操作

谢谢,任何帮助将不胜感激

public class BinaryToDecimal{

    public static void main(String[] args){
        String binaryString = args[0];
        int decimalValue;

        int length = binaryString.length();
        double j = 0;

        for (int i=0; i< binaryString.length(); i++){
            if (binaryString.charAt(i)== '1'){
                j = j+  Math.pow(2, binaryString.length() - 1 - i);
            }
        }

        decimalValue = (int) j;   

        System.out.println(decimalValue);
    }
}

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

int j = 0;
for (int i=0; i< binaryString.length(); i++)
{
  j <<= 1;
  if (binaryString.charAt(i)== '1')
  {
    ++j;
  }
}

答案 1 :(得分:0)

是的,您可以(并且应该)在不使用Math.pow的情况下进行转化。

以下代码将{2的n次幂加到j

j += 1 << n;

但我推荐Jim Rhodes的答案,因为它是一个更简单的解决方案。你不需要提高2到各种权力;所有你真正需要知道的是,每当你在二进制数的右端写一个额外的数字时,前一个数字的值加倍。例如,二进制的111等于十进制数7,但如果我再写一个数字,如1110,那么该值等于2 * 7,即十进制表示法中的14

相关问题