數字系統的轉換方法與原理
Methods and Principles of Number System Conversion
本文旨在探討不同進制數字系統間的轉換方法與原理。首先,我們先來看十進制數字包含整數與小數轉換為其它進制數字的方法與原理。接著探討 $2^k$ 進制系統與 $2$ 進制系統,以及 $2^k$ 進制系統與 $2^i$ 進制系統的互換方法與原理。最後再來了解其餘的數字系統之間是如何轉換。
數字表示法
十進制數字可以表示為 $10$ 的次方多項式,例如
$$987.65 = 9×10^2+8×10^1+7×10^0+6×10^{-1}+5×10^{-2}$$
其中的 $10$ 被稱為該數字系統的基底。
而任何基底為 $x$ 的數字 ($x$ 為大於 $1$ 的整數),若其對應的十進制正整數為 $d$,且 $d<x^n$,$n$ 為一正整數,則 $d$ 可表示為如下所示的 $x$ 次方多項式:
$$d = \sum_{i = -m}^{n-1} a_i\;x^i= a_{n-1}\;x^{n-1}+a_{n-2}\;x^{n-2}+...+a_1\;x^1+a_0\;x^0+a_{-1}\;x^{-1}+...+a_{-m}\;x^{-m}$$
其中的 $a_i$ 為整數,且 $0 \le a_i \le x-1$ 。
此外,在符號的表示上,基底為 $x$ 的數字 $N$ ,常可表示為 $(N)_x$。
例如:$(1001.01)_2 = (?)_{10}$
解:
因為基底 $x = 2$,$n = 4$,所以
$$(1001.01)_2 = 1×2^3+0×2^2+0×2^1+1×2^0+0×2^{-1}+1×2^{-2} = (9.25)_{10}$$
十進制整數轉換為其它進制數字
若有一個十進制正整數 $d$ ,欲轉換成 $x$ 進制數字,即
$$(d)_{10} = (a_{n-1}\; a_{n-2}\; a_{n-3}\; ... \;a_2\; a_1\; a_0)_x $$
其中 $d<x^n$,$n$ 為一正整數,且 $a_{n-1}$、$a_{n-2}$、$...$、$a_1$ 以及 $ a_0$ 均為小於 $x$ 的整數,則 $d$ 可表示為
$$ d = a_{n-1}\;x^{n-1}+a_{n-2}\;x^{n-2}+a_{n-3}\;x^{n-3}+...+a_3\;x^3+a_2\;x^2+a_1\;x^1+a_0\;x^0$$
將上式右邊除以 $x$ ,則可得商式如下:
$$a_{n-1}\;x^{n-2}+a_{n-2}\;x^{n-3}+a_{n-3}\;x^{n-4}+...+a_3\;x^2+a_2\;x^1+a_1\;x^0\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(\;餘數\;a_0\;)$$
再將上面的商式繼續除以 $x$ ,可得另一商式:
$$a_{n-1}\;x^{n-3}+a_{n-2}\;x^{n-4}+a_{n-3}\;x^{n-5}+...+a_3\;x^1+a_2\;x^0+a_1\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(\;餘數\;a_1\;)$$
.
.
.
繼續將商式連除以 $x$,持續 $n$ 次後最後可得商式 $0$,餘數 $a_{n-1}$。
因此,將 $d$ 連除以 $x$ 直至商式為 $0$,每次所得的餘數即分別為 $a_0$、$a_1$、$...$、$a_{n-2}$ 以及 $a_{n-1}$。
例如:$(35)_{10}=(?)_2$
解:
$d = 35$,且 $x = 2$,如下算式所示 $(35)_{10} = (10011)_2$
十進制小數轉換為其它進制數字
若有一個十進制正小數 $f$,欲轉換成 $x$ 進制數字,即
$$(f)_{10} = (.b_{-1}\;b_{-2}\;b_{-3}\;...)_x$$
其中 $f < 1$,且 $b_{-1}$、$b_{-2}$、$b_{-3}$ ... 均為小於 $x$ 的整數,則 $f$ 可表示為
$$f = b_{-1}\;x^{-1}+b_{-2}\;x^{-2}+b_{-3}\;x^{-3}+\;...$$
將上式右邊乘以 $x$,可得如下的乘積式
$$b_{-1}+b_{-2}\;x^{-1}+b_{-3}\;x^{-2}+\;...$$
其中整數部分為 $b_{-1}$。
再將上面的乘積式,去除整數部分 ( 即 $b_{-1}$) 後,繼續乘以 $x$ ,可得另一商式 $b_{-2}+b_{-3}\;x^{-1}+\;...$,整數部分則為 $b_{-2}$。
.
.
.
.
.
$x$ 連乘去除整數部分後的乘積式 $n$ 次,直至乘積式為 $0$ ,每次所得商式的整數部分即分別為 $b_{-1}$、$b_{-2}$、$b_{-3}\;...\;b_{-n}$。但若 $x$ 連乘去除整數部分後的乘積式,一直都無法得到 $0$,則轉換出來的 $x$ 進制小數可能為無限小數。此時,選擇符合準確度需求的適當小數位數即可停止。
例如:$(0.25)_{10} = (?)_2$
解:
$f = 0.25$ 且 $x=2$,如下算式所示:$(0.25)_{10} = (0.01)_2 $
例如:$(0.73)_{10} = (0.1011101...)_2$
$2^k$ 進制與 $2$ 進制之間的轉換
若有一 $2^k$ 進制數字,$k$ 為大於 $1$ 的正整數,其對應的十進制值為 $h$,欲轉換成 $2$ 進制數字,且 $h < (2^k)^n$,則 $h$ 可表示成
$$h = (a_{n-1}\;a_{n-2}\;...\;a_1\;a_0\;.\;a_{-1}\;a_{-2}\;...\;a_{-m})_{2^k}$$
其中的 $a_{n-1}$、$a_{n-2}$、$...$、$a_1$、$a_0$、$a_{-1}$、$a_{-2}$、$...a_{-m}$ 均為正整數,則
$$h = a_{n-1}(2^k)^{n-1}+a_{n-2}(2^k)^{n-2}+a_{n-3}(2^k)^{n-3}+...+a_1(2^k)^1+a_0(2^k)^0$$
$$\;+\;a_{-1}(2^k)^{-1}+a_{-2}(2^k)^{-2}+\;...\;+a_{-m}(2^k)^{-m}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(1)\;\;\;\;\;$$
假設其中的
$$(a_{n-1})_{2^k} = (b_{k-1}\;b_{k-2}\;...\;b_1\;b_0)_2$$
$$(a_{n-2})_{2^k} = (b_{k-1}^{'}\;b_{k-2}^{'}\;...\;b_1^{'}\;b_0^{'})_2$$
$$(a_{n-3})_{2^k} = (b_{k-1}^{"}\;b_{k-2}^{"}\;...\;b_1^{"}\;b_0^{"})_2$$
.
.
.
$$(a_1)_{2^k} = (b_{k-1}^{<n-2>}\;b_{k-2}^{<n-2>}\;...\;b_1^{<n-2>}\;b_0^{<n-2>})_2$$
$$(a_0)_{2^k} = (b_{k-1}^{<n-1>}\;b_{k-2}^{<n-1>}\;...\;b_1^{<n-1>}\;b_0^{<n-1>})_2$$
$$(a_{-1})_{2^k} = (b_{k-1}^{<n>}\;b_{k-2}^{<n>}\;...\;b_1^{<n>}\;b_0^{<n>})_2$$
$$(a_{-2})_{2^k} = (b_{k-1}^{<n+1>}\;b_{k-2}^{<n+1>}\;...\;b_1^{<n+1>}\;b_0^{<n+1>})_2$$
.
.
.
$$(a_{-m})_{2^k} = (b_{k-1}^{<n+m-1>}\;b_{k-2}^{<n+m-1>}\;...\;b_1^{<n+m-1>}\;b_0^{<n+m-1>})_2$$
所以,
$$a_{n-1} = b_{k-1}(2^{k-1})+b_{k-2}(2^{k-2})+...+b_1(2^1)+b_0(2^0)$$
$$a_{n-2} = b_{k-1}^{'}(2^{k-1})+b_{k-2}^{'}(2^{k-2})+...+b_1^{'}(2^1)+b_0^{'}(2^0)$$
.
.
.
$$a_1 = b_{k-1}^{<n-2>}(2^{k-1})+b_{k-2}^{<n-2>}(2^{k-2})+...+b_1^{<n-2>}(2^1)+b_0^{<n-2>}(2^0)$$
$$a_0 = b_{k-1}^{<n-1>}(2^{k-1})+b_{k-2}^{<n-1>}(2^{k-2})+...+b_1^{<n-1>}(2^1)+b_0^{<n-1>}(2^0)$$
$$a_{-1} = b_{k-1}^{<n>}(2^{k-1})+b_{k-2}^{<n>}(2^{k-2})+...+b_1^{<n>}(2^1)+b_0^{<n>}(2^0)$$
$$a_{-2} = b_{k-1}^{<n+1>}(2^{k-1})+b_{k-2}^{<n+1>}(2^{k-2})+...+b_1^{<n+1>}(2^1)+b_0^{<n+1>}(2^0)$$
.
.
.
$$a_{-m} = b_{k-1}^{<n+m-1>}(2^{k-1})+b_{k-2}^{<n+m-1>}(2^{k-2})+...+b_1^{<n+m-1>}(2^1)+b_0^{<n+m-1>}(2^0)$$
將上面的 $a_{n-1}$、$a_{n-2}$、$...$、$a_1$、$a_0$、$a_{-1}$、$a_{-2}$、$...$、$a_{-m}$ 代入 $(1)$,可得
$$h =\left [b_{k-1}(2^{k-1})+b_{k-2}(2^{k-2})+...+b_1(2^1)+b_0(2^0) \right ]2^{k(n-1)}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$+\left [b_{k-1}^{'}(2^{k-1})+b_{k-2}^{'}(2^{k-2})+...+b_1^{'}(2^1)+b_0^{'}(2^0)\right ]2^{k(n-2)}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$+\left [b_{k-1}^{"}(2^{k-1})+b_{k-2}^{"}(2^{k-2})+...+b_1^{"}(2^1)+b_0^{"}(2^0)\right ]2^{k(n-3)}\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
.
.
.
$$\;+\left [b_{k-1}^{<n-2>}(2^{k-1})+b_{k-2}^{<n-2>}(2^{k-2})+...+b_1^{<n-2>}(2^1)+b_0^{<n-2>}(2^0)\right ]2^{k(1)}$$
$$\;+\left [b_{k-1}^{<n-1>}(2^{k-1})+b_{k-2}^{<n-1>}(2^{k-2})+...+b_1^{<n-1>}(2^1)+b_0^{<n-1>}(2^0)\right ]2^{k(0)}$$
$$+\left [b_{k-1}^{<n>}(2^{k-1})+b_{k-2}^{<n>}(2^{k-2})+...+b_1^{<n>}(2^1)+b_0^{<n>}(2^0)\right ]2^{k(-1)}\;\;\;\;\;\;\;\;\;\;$$
$$\;\;\;\;\;\;+\left [b_{k-1}^{<n+1>}(2^{k-1})+b_{k-2}^{<n+1>}(2^{k-2})+...+b_1^{<n+1>}(2^1)+b_0^{<n+1>}(2^0)\right ]2^{k(-2)}+$$
.
.
.
$$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;+\left [b_{k-1}^{<n+m-1>}(2^{k-1})+b_{k-2}^{<n+m-1>}(2^{k-2})+...+b_1^{<n+m-1>}(2^1)+b_0^{<n+m-1>}(2^0)\right ]2^{k(-m)}$$
因此,
$$h = b_{k-1}(2^{kn-1})+b_{k-2}(2^{kn-2})+...+b_1(2^{kn-(k-1)})+b_0(2^{kn-k})\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$+b_{k-1}^{'}(2^{kn-k-1})+b_{k-2}^{'}(2^{kn-k-2})+...+b_1^{'}(2^{kn-k-(k-1)})+b_0^{'}(2^{kn-k-k})\;\;\;\;\;\;\;\;\;\;$$
$$\;\;\;\;+b_{k-1}^{"}(2^{kn-k-(k+1)})+b_{k-2}^{"}(2^{kn-k-(k+2)})+...+b_1^{"}(2^{kn-k-(2k-1)})+b_0^{"}(2^{kn-k-2k})$$
.
.
.
$$+b_{k-1}^{<n-2>}(2^{2k-1})+b_{k-2}^{<n-2>}(2^{2k-2})+...+b_1^{<n-2>}(2^{2k-(k-1)})+b_0^{<n-2>}(2^{2k-k})$$
$$+b_{k-1}^{<n-1>}(2^{k-1})+b_{k-2}^{<n-1>}(2^{k-2})+...+b_1^{<n-1>}(2^1)+b_0^{<n-1>}(2^0)\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$+b_{k-1}^{<n>}(2^{-1})+b_{k-2}^{<n>}(2^{-2})+...+b_1^{<n>}(2^{-(k-1)})+b_0^{<n>}(2^{-k})\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$\;\;\;\;\;\;\;+b_{k-1}^{<n+1>}(2^{-k-1})+b_{k-2}^{<n+1>}(2^{-k-2})+...+b_1^{<n+1>}(2^{-k-(k-1)})+b_0^{<n+1>}(2^{-k-k})+$$
.
.
.
$$+b_{k-1}^{<n+m-1>}(2^{-k(m-1)-1})+b_{k-2}^{<n+m-1>}(2^{-k(m-1)-2})+\; ... \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$+b_1^{<n+m-1>}(2^{-k(m-1)-(k-1)})+b_0^{<n+m-1>}(2^{-k(m-1)-k})\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
亦即
$$(a_{n-1}\;a_{n-2}\;...\;a_1\;a_0\;.\;a_{-1}\;a_{-2}\;..\;a_{-m})_{2^k} = (b_{k-1}\;b_{k-2}\;...\;b_1\;b_0\;b_{k-1}^{'}\;b_{k-2}^{'}\;...\;b_1^{'}\;b_0^{'}\;...\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;$$
$$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;b_{k-1}^{<n-2>}b_{k-2}^{<n-2>}...b_1^{<n-2>}b_0^{<n-2>}b_{k-1}^{<n-1>}b_{k-2}^{<n-1>}\;...$$
$$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;b_1^{<n-1>}b_0^{<n-1>}.b_{k-1}^{<n>}b_{k-2}^{<n>}\;...$$
$$\;\;\;\;\;\;\;\;\;\;\;\;\;b_1^{<n>}b_0^{<n>}b_{k-1}^{<n+1>}b_{k-2}^{<n+1>}...$$
$$b_1^{<n+1>}b_0^{<n+1>}\;...$$
$$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;b_{k-1}^{<n+m-1>}b_{k-2}^{<n+m-1>}...b_1^{<n+m-1>}b_0^{<n+m-1>})_2$$
例如:$(A4F.5B)_{16} = (?)_2$
解:
因為 $k = 4$,$n = 3$,且
$$(a_2\;a_1\;a_0\;.a_{-1}\;a_{-2})_{2^k} = (b_3\;b_2\;b_1\;b_0\;b_3^{'}\;b_2^{'}\;b_1^{'}\;b_0^{'}\;b_3^{"}\;b_2^{"}\;b_1^{"}\;b_0^{"}.b_3^{<3>}b_2^{<3>}b_1^{<3>}b_0^{<3>}b_3^{<4>}b_2^{<4>}b_1^{<4>}b_0^{<4>})_2$$
又
$$(a_2)_{16} = (b_3\;b_2\;b_1\;b_0)_2\; \implies\; (A)_{16} = (1010)_2$$
$$(a_1)_{16} = (b_3^{'}\;b_2^{'}\;b_1^{'}\;b_0^{'})_2\; \implies\;(4)_{16} = (0100)_2$$
$$(a_0)_{16} = (b_3^{"}\;b_2^{"}\;b_1^{"}\;b_0^{"})_2\; \implies\; (F)_{16} = (1111)_2$$
$$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(a_{-1})_{16} = (b_3^{<3>}\;b_2^{<3>}\;b_1^{<3>}\;b_0^{<3>})_2\; \implies\; (5)_{16} = (0101)_2$$
$$\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(a_{-2})_{16} = (b_3^{<4>}\;b_2^{<4>}\;b_1^{<4>}\;b_0^{<4>})_2 \; \implies\;(B)_{16} = (1011)_2$$
所以
$$(A4F.5B)_{16} = (1010 0100 1111.0101 1011)_2$$
例如: $(111100111110.0010101)_2 = (?)_{16}$
所以, $(1111 0011 1110.0010 1010)_2 = (F3E.2A)_{16}$。
$2^k$ 進制與$2^i$進制間轉換
若 $k \neq i \neq 1$,利用上述 $2^k$ 進制轉換成 $2$ 進制方法進行 $2$ 進制轉換,再利用上述 2 進制轉換成 $2^i$ 進制方法將 $2$ 進制轉換成 $2^i$ 進制即可。
例如:$(BC2)_{16} = (?)_8$
$k = 4$,$i = 3$,
其它進制間轉換
其它進制之間的轉換,先將要被轉換的進制轉成十進制,再由利用上述的十進制轉成欲轉換的進制的方法,即可完成轉換。
例如:$(34)_5 = (?)_3$
解:
$$(34)_5 = 3×5^1+4×5^0 = (19)_{10} = (201)_3$$




留言
張貼留言