-2

バックグラウンド

大学の課題で、4 桁の 16 進数で表されるパターンを描く必要があります。これまでのところ、少し小さなことを除いて、必要なすべてを作成することができました。コードにバグがあり、A から F (または 10 進数の 10 から 17) の間の 16 進数値が役に立たなくなります。

16 進数から 10 進数値を取得し、それを 2 進数値に変換するメソッドを作成しました。

これが私が得た結果のリストです:

 Decimal 1  -> Binary 1    -> CORRECT
 Decimal 2  -> Binary 1    -> Should be 10
 Decimal 3  -> Binary 11   -> CORRECT
 Decimal 4  -> Binary 1    -> Should be 100
 Decimal 5  -> Binary 101  -> CORRECT
 Decimal 6  -> Binary 11   -> Should be 110
 Decimal 7  -> Binary 111  -> CORRECT
 Decimal 8  -> Binary 1    -> Should be 1000
 Decimal 9  -> Binary 1001 -> CORRECT
 Decimal 10 -> Binary 101  -> Should be 1010
 Decimal 11 -> Binary 1101 -> Should be 1011
 Decimal 12 -> Binary 11   -> Should be 1100
 Decimal 13 -> Binary 1011 -> Should be 1101
 Decimal 14 -> Binary 111  -> Should be 1110
 Decimal 15 -> Binary 1111 -> CORRECT

出力は、実際には本来あるべきものの逆です。そもそも出力を逆にしたり、コードを正しい順序で出力したりするにはどうすればよいですか?

編集#2

元の投稿で言及されているように、ここでの問題は次のとおりです。

  for (int i = 0; i<=3; i++){ //loops trough my pattern array 
                            // Will receive the binary values
    while (nDecimal[i]!=0){
    pattern[i]= pattern[i]*10 + nDecimal[i]%2;
    nDecimal[i]/=2;
    System.out.println("Binary ["+i+"] " + pattern[i]);
}

正しく動作しておらず、2 進数を逆順に出力しています。要するに、変換を行うコードは次のとおりです。

    int myDecimal;
    int result;
   while (myDecimal!=0){
    result= result*10 + myDecimal%2;
    myDecimal=2;

}
4

2 に答える 2

1

私は今朝それを理解することができました、これが私がしたことです:

                int tester;
                for (int i = 0; i<=3; i++){
                int multiplier = 1;
                    while (nDecimal[i]>0)
                    {
                        int remainder = nDecimal[i]%2;
                        nDecimal[i] = nDecimal[i]/2;
                        binary[i] = binary[i] +remainder*multiplier;
                        multiplier = multiplier * 10;
                    }}

このコードが行うことは、nDecimal[] 配列値をループして、それ自体を binary[] に変換することです。nDecimal 配列の各「スロット」は 10 進数ベース (Base-10) にあり、連続除算法によってバイナリ ベース (Base-2) に変換されます (例: http://www.wikihow.com /10 進数から 2 進数への変換)

将来他の誰かに役立つかもしれないので、私は自分の問題に awnser を投稿しました

于 2014-05-11T11:09:29.727 に答える