基数之间的转换算法如何工作?

时间:2012-12-17 02:00:15

标签: java binary

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但我似乎无法理解如何反向。

1 个答案:

答案 0 :(得分: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