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