Java Bin到Dec代码解释

Java Bin到Dec代码解释,java,binary,decimal,Java,Binary,Decimal,学生,我的老师说代码没问题。。但她问我为什么二进制输入00101变成了5.0 dec。 我真的需要帮助。我不知道如何解释00101 bin是如何变成5.0的 我尝试了很多类似的计算 5(字符长度)-3(索引)-1*math.pow=4 我找不到最后一个使我的4变成5的数字 char[] charArray = binary.toCharArray(); double answer = 0; for (double index = 0; index < charArray.length;

学生,我的老师说代码没问题。。但她问我为什么二进制输入00101变成了5.0 dec。 我真的需要帮助。我不知道如何解释00101 bin是如何变成5.0的 我尝试了很多类似的计算

5(字符长度)-3(索引)-1*math.pow=4

我找不到最后一个使我的4变成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));
char[]charArray=binary.toCharArray();
双答案=0;
for(双索引=0;索引
您使用的
Math.pow()
是双倍运算的,因此这是正常的

打印
(int)答案
,或者使用此选项:

final int size = charArray.length;
char c;
int answer = 0;

for (int index = size; index > 0; index++) {
    if (charArray[index] == '1')
        answer++;
    answer <<= 1;
}
final int size=charArray.length;
字符c;
int-answer=0;
对于(int index=size;index>0;index++){
如果(字符[索引]='1')
回答++;

回答我不确定我是否正确理解了你的问题,但以下是程序的计算结果:

00101表示
0*2^4+0*2^3+1*2^2+0*2^1+1*2^0
=0*16+0*8+1*4+0*2+1*1=5


更多详细信息参见《我知道如何在纸上把bin转换成dec》或只是看一下。我只需要参考我的代码。为了获得2的使用权,我的代码工作,我只需要解释为什么00101得到5.0 dec,我的老师说我只需要参考我的代码,我不知道我为什么制作这种代码,我无法解释001是如何工作的01得到5.0:DIt是因为你的打印是双精度的,这就是为什么。它应该是5位数,正如你所看到的00101有5位数,这就是字符。长度,所以它应该是5-0-1^2..5-1-1^2..5-2.1^2..5-3-1^2..5-4-1^2..Ok,你的外观从最低位开始:
1*2^0+0*2^1+1*2^2..2+0*3+0*2^4
。但是我不明白你的意思问题是。