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

我想知道为什么上面的代码可以将base-10中的数字转换为base-2。我知道如何编写一个程序来将 base-2 转换为 base-10,但我似乎不明白如何做相反的事情。

4

1 回答 1

2

首先,我认为这种转换是不合理的,不应该这样做。

Base-10 或 Base-2 只是相同数字的文本表示。但是,您的逻辑是将数字 (A) 更改为另一个数字 (B),如果您在 base-10 中读取 B,它将看起来与 A 的 base-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 回答