2i進制

**2i 進位**，是由高德納於 1995 年提出來的，當時用作高中科學精英研究用。它是一種以 2i 為基數的非標準進位制。這種進位以 0、1、2、3 為基本數碼，能夠獨一無二的表示全體複數。

## 轉換 2i 進位到十進位

將 2i 進位轉換為十進位可以用標準公式。這個公式是：

 $b$ 進位數 $\ldots d_{3}d_{2}d_{1}d_{0}$ 的十進位數為

　
: $\cdots +d_{3}\cdot b^{3}+d_{2}\cdot b^{2}+d_{1}\cdot b+d_{0}$

2i 進位中， $b=2i$ 。

### 示例

將 $1101_{2i}$ 轉換為十進位，可按照上述公式填入相應數字：

　
: $1\cdot (2i)^{3}+1\cdot (2i)^{2}+0\cdot (2i)^{1}+1\cdot (2i)^{0}=-8i-4+0+1=-3-8i$

再比如： $1030003_{2i}$ 十進位是

　
: $1\cdot (2i)^{6}+3\cdot (2i)^{4}+3\cdot (2i)^{0}=-64+3\cdot 16+3=-13$

## 十進位轉換到 2i 進位

也能將十進位數轉換為 2i 進位。 每個複數（形如 _a_+_bi_） 都有個 2i 進位形式。 大多十進位數都只有 1 個形式，但像 1 這樣的數在十進位中有兩種形式 1.0 = 0.9， 相對應的 1/5 有兩種 2i 進位形式：1.03002_i_ = 0.00032_i_。

要轉換十進位數，先將實部和虛部分別轉換為 2i 進位數，然後加到一起即可。 比如， –1+4_i_ 等於–1 加上 4_i_，–1 的 2i 進位數是 103， 4_i_ 的 2i 進位數是 20，因此 –1+4_i_ = 1232i。

轉換虛部時，可以先乘以 2_i_，得到一個實數；然後將這個實數轉換為 2i 進位，然後右移一位即可（等效於除以 2_i_）。 例如，虛部是 6_i_，先將 6_i_ 乘以 2_i_ 得到 –12，化為 2i 進位是 3002i，然後右移一位，得到： 6_i_ = 302i。

轉換實數，可以用方程組來求解。

### 示例：實數

我們來求解 7 的 2i 進位數。我們很難知道這個 2i 進位數有多長，所以我們先假設一個比較長的數。 我們先選六位試試，如果不夠，我們再延長。
我們寫出公式，然後分組：

　
: ${\begin{aligned}7_{10}&=d_{0}+d_{1}\cdot b+d_{2}\cdot b^{2}+d_{3}\cdot b^{3}+d_{4}\cdot b^{4}+d_{5}\cdot b^{5}\\&=d_{0}+2id_{1}-4d_{2}-8id_{3}+16d_{4}+32id_{5}\\&=d_{0}-4d_{2}+16d_{4}+i(2d_{1}-8d_{3}+32d_{5})\\\end{aligned}}$

7 是實數，因此 _d1_、_d3_ 和 _d5_ 是 0。 剩下就是係數 _d0_、_d2_ 和 _d4_。 因為 d0 − 4 d2 + 16 d4 = 7 並且他們只能是 0、 1、 2 或 3 。可能的結果是： _d0_ = 3, _d2_ = 3 ， _d4_ = 1。 這樣就找到了 710 的 2i 進位數。

　
: ${\begin{aligned}7_{10}=010303_{2i}=10303_{2i}.\end{aligned}}$

### 示例：虛數

找一個純虛數的 2i 進位數，可以模擬實數的方法。 例如 6_i_, 也可以用公式。實部全為零，虛部化為 6。 6_i_ 很容易看出 _d1_ = 3 其他各位都是 0。6_i_ 就是：

　
: ${\begin{aligned}6i_{10}=30_{2i}\end{aligned}}$

### 其他的轉換方式

對實數而言，2i 進位表示法實際上與負四進位相同。要將複數 _x_+_iy_ 轉換成 2i 進位可以透過將 _x_ 和 _y_/2 分別轉換為負四進位再將之交錯合併來完成轉換成 2i 進位的工作。如果 _x_ 和 _y_ 都是有限的二進位小數，則可以使用連續的帶餘除法來將十進位數轉換成 2i 進位：

例如：35+23i=121003.22i

## 小數點「.」

十進位中小數點用來區分整數部分和小數部分。2i 進位中小數點一樣可以用，比如 $...d_{5}d_{4}d_{3}d_{2}d_{1}d_{0}.d_{-1}d_{-2}d_{-3}...$ 中，小數點用來分割 _b_ 的正數冪和負數冪。帶小數點時，公式是：

　
: $d_{5}b^{5}+d_{4}b^{4}+d_{3}b^{3}+d_{2}b^{2}+d_{1}b+d_{0}+d_{-1}b^{-1}+d_{-2}b^{-2}+d_{-3}b^{-3}$

或

　
: $32id_{5}+16d_{4}-8id_{3}-4d_{2}+2id_{1}+d_{0}+{\frac {1}{2i}}d_{-1}+{\frac {1}{-4}}d_{-2}+{\frac {1}{-8i}}d_{-3}$

$$
=32id_{5}+16d_{4}-8id_{3}-4d_{2}+2id_{1}+d_{0}-{\frac {i}{2}}d_{-1}-{\frac {1}{4}}d_{-2}+{\frac {i}{8}}d_{-3}
$$

### 示例

將 i 轉換為 2i 進制，沒有小數點的話，可能沒辦法做到。因此：

　
: ${\begin{aligned}i&=32id_{5}+16d_{4}-8id_{3}-4d_{2}+2id_{1}+d_{0}+{\frac {1}{2i}}d_{-1}+{\frac {1}{-4}}d_{-2}+{\frac {1}{-8i}}d_{-3}\\&=i(32d_{5}-8d_{3}+2d_{1}-{\frac {1}{2}}d_{-1}+{\frac {1}{8}}d_{-3})+16d_{4}-4d_{2}+d_{0}-{\frac {1}{4}}d_{-2}\\\end{aligned}}$

實部為 0； _d4 = d2 = d0 = d-2 = 0_. 
虛部，當 _d5 = d3 = d -3 = 0_ 並且 當 _d1=1_ ， _d-1=2_ 時結果正確。所以

　
: ${\begin{aligned}i=10.2_{2i}\end{aligned}}$ .

### 示例（分數）

將 ${\frac {1}{3}}$ 轉換為 2i 進制，其結果為 - 0.0203。

## 加減法

2i 進位也可以做加減法。 首先要記住以下規則：

1. 數字超過 3 時， _減_ 4 "進" −1 到左邊第二位。
2. 數字小於 0 時， _加_ 4"進" +1 到左邊第二位。

簡單的說： 「加四進一、減四借一」（當作四進制來計算）。 和一般豎式加法不同的是，要借 / 進到左邊第二位。

### 示例：加法

```
   1 - 2i                1031             3 - 4i                 1023
   1 - 2i                1031             1 - 8i                 1001
   ------- +     <=>     ----- +          ------- +      <=>     ----- +
   2 - 4i                1022             4 - 12i               12320
```

第一個例子，先是 1+1=2。然後是 3+3=6，6 比 3 大，我們得減 4 借 1。接著是 0+0=0。然後是 1+1=2，在減去借的 1。得 1。

第二個例子，先是 3+1=4; 4 比 3 大，我們得減 4 借 1。然後是 2+0=2。 接著是 0+0=0，再減去借位 1，得 - 1，小於 0，我們得加四進一。 然後是 1+1=2; 最後是進位 1。我們得到結果 $12320_{2i}$ 。

### 示例：減法

減法和加法類似。下面是例子：

```
         - 2 - 8i                       1102
           1 - 6i                       1011  
           ------- -         <=>        ----- -
         - 3 - 2i                       1131
```

這個例子中，先是 2-1 = 1。 然後是 0-1=-1，小於 0，加 4 進 1 得 3；接著是 1-0=1。然後是 1-1=0，加上進位得 1。 結果就是 $1131_{2i}$ 。

## 乘法

乘法也要用到上面兩點。先逐位相乘，然後疊加。比如：

```
             11201
             20121  x
             --------
             11201      <--- 1 x 11201
            12002       <--- 2 x 11201
           11201        <--- 1 x 11201
          00000         <--- 0 x 11201
         12002      +   <--- 2 x 11201
         ------------
         120231321
```

也就是 $(9-8i)\cdot (29+4i)=293-196i$ 。

## 查表轉換

下面是一個常用的複數對照表。我們可以用疊加的方法來轉換複數

## 示例

　
: $5=16+(3\cdot -4)+1=10301_{2i}$

　
: $i=2i+2\left(-{\frac {1}{2}}i\right)=10.2_{2i}$

　
: $7{\frac {3}{4}}-7{\frac {1}{2}}i=1(16)+1(-8i)+2(-4)+1(2i)+3\left(-{\frac {1}{2}}i\right)+1\left(-{\frac {1}{4}}\right)=11210.31_{2i}$

## 參見

* 四進制
* 十六進制
* 複進制
* 負進位

## 參考資料

* D. Knuth. _The Art of Computer Programming_. Volume 2, 3rd Edition. Addison-Wesley. pp. 205, "Positional Number Systems"

* **^** Donald Knuth. An imaginary number system. Communications of the ACM. April 1960, **3** (4).