✔ 最佳答案
如果由一個10進位的數 x 轉成2進位, 可以有以下算法:
Set a = x
當 a > 0
{
寫出a/2的餘數
Set a = floor(a/2)
}
把寫出的東西掉轉便是答案
用個實例去驗證, 假設 x 是13
以下是運算結果
a = 13
Output remainder(13/2) = 1
a = floor(13/2) = 6
Output remainer(6/2) = 0
a = floor(6/2) = 3
Output remainder(3/2) = 1
a = floor(3/2) = 1
Output remainder(1/2) = 1
a = floor(1/2) = 0 ... finished
The output is 1011
掉轉, 得出 1101 (2).
如果要2進位轉10進位, 可以先將2 進位掉轉寫,
例: 1101 -> 1011,
然後由左至右, 每個位各自乘1個factor, 第 i 個位乘 2的 (i - 1)次方, 然後加起來, 即係
1101 (2) = 1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 + 0 + 4 + 8 = 13 (10)
2007-08-10 21:00:24 補充:
floor(x/y) = [ x - (x/y)的餘數 ] / y, y =/= 0例: 13/2 的餘數是1, floor(13/2) = (13 - 1) / 2 = 12/2 = 6上面寫的算法在其他進位也適合, 例如 n 進位時, 算法改成Set a = x當 a 大過 0{寫出a/n的餘數Set a = floor(a/n)}