我编写了一个将二进制转换为十进制的程序,但我想知道如何在不使用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);
}
}
答案 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