-2
void convert(int bTen) {
    System.out.println("Base 10 = " + bTen);
    int bTwo = 0;
    int leftOver = bTen;
    while (leftOver > 0) {
        int i = 0;
        int remains = 0;
        while (remains >= 0) {
            remains = leftOver - (int)Math.pow(2, i);
            i++;
        }
        bTwo += Math.pow(10, i - 2);
        leftOver = leftOver - (int)Math.pow(2, i - 2);
    }
    System.out.println("Base 2 = " + bTwo);
}

上記のコードが基数 10 の数値を基数 2 に変換できるのはなぜだろうと思っていました。基数 2 を基数 10 に変換するプログラムの書き方は知っていますが、その逆の方法を理解できないようです。

4

1 に答える 1

2

まず、この変換は不合理であり、そのように行われるべきではないと思います。

Base-10またはBase-2は、単に同じ番号のテキスト表現です。ただし、ロジックは数値(A)を別の数値(B)に変更しているため、10進数でBを読み取っている場合は、Aの2進数と同じように見えます。

とにかく、引用されたコードのロジックのアイデアは次のようなものです。

loop until input is not zero (i.e. loop until all binary digits processed)
  find the position (i) of the most significant bit that is 1
  set position of i of result being 1
  subtract 2^i from input
end loop
于 2012-12-17T02:14:32.243 に答える