bin到dec的计算是否正确?

时间:2013-07-05 11:44:10

标签: java binary

00101 = 5位数,忽略两个零并计算

0+(5-2-1)^2 = 4 
4+(5-3-1)^2 = 5 
5+(5-4-1)^2 = 5

最终答案是否正确?

char[] charArray = binary.toCharArray(); 
double answer = 0; 
for (double index = 0; index < charArray.length; index++)
{
   if (charArray[(int)index] == '1')
   {
      answer = answer + Math.pow(2.0, (charArray.length - index - 1));
   }
}

2 个答案:

答案 0 :(得分:1)

使用Integer.parseInt,使用基数2将您的String转换为int:

int decimalValue = Integer.parseInt(c, 2);

参考:

  

http://docs.oracle.com/javase/6/docs/api/java/lang/Integer.html#parseInt%28java.lang.String,%20int%29

正在计算您的预期结果,就好像从右到左读取二进制字符串一样;但是,您的代码是从左到右读取二进制字符串。

你也可以试试这个:

char[] charArray = binary.toCharArray(); 
double answer = 0; 
for (double index = charArray.length - 1; index >= 0; index--)
{
     if (charArray[(int)index] == '1') 
     {
          answer = answer + Math.pow(2.0, index);
     }
}

答案 1 :(得分:0)

不要重新发明轮子。使用以下简单代码。

  int dec=Integer.valueOf(binStr, 10);//Here 10 is base.