0

T の学生、私の先生はコードは大丈夫だと言いました..しかし、彼女はなぜバイナリ入力 00101 が 5.0 dec になるのかと私に尋ねました。私は本当に助けが必要です。00101 bin が 5.0 になる方法を説明する方法がわかりません。次のような多くの計算を試しました。

5(chararraylength)-3(index)-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));
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

ウィキペディア Binary_number の詳細

于 2013-07-05T10:43:13.110 に答える
0

double で動作する which を使用するMath.pow()ため、これは正常です。

(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 に答える