0

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

5(chararraylength)-3(index)-1 * math.pow = 4

我无法获得使我的 4 变为 5.o dec 的最后一个数字。

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));
4

2 回答 2

0

我不确定我是否正确理解了您的问题,但这是程序进行的计算:

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

更多详情请参阅 Wikipedia Binary_number

于 2013-07-05T10:43:13.110 回答
0

您使用Math.pow()which 对双打进行操作,因此这是正常的。

打印(int) answer或改用它:

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

for (int index = size; index > 0; index++) {
    if (charArray[index] == '1')
        answer++;
    answer <<= 1;
}

另请注意,数组索引是ints,因此您的index变量应该是 int。

于 2013-07-05T10:30:21.440 回答