2i進制

**2i进制**，是由高德纳于1955年提出来的，。它是一种以2i为基数的非标准进位制。这种进制以0、1、2、3为基本數碼，能够独一无二的表示全体复数。

## 转换2i进制到十进制




将2i进制转换为十进制可以用标准公式。这个公式是：

b进制数\ldots d_3d_2d_1d_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.， 相对应的 1/5有两种2i进制形式：1.2*i* = 0.2*i*。

要转换十进制数，先将实部和虚部分别转换为2i进制数，然后加到一起即可。 比如，  等于 加上 ，的2i进制数是103， 的2i进制数是20，因此  = 。

转换虚部时，可以先乘以，得到一个实数；然后将这个实数转换为2i进制，然后右移一位即可（等效于除以 ）。 例如，虚部是 ，先将 乘以 得到 ，化为2i进制是，然后右移一位，得到：  = 。

转换实数，可以用方程组来求解。

### 示例：实数
我们来求解7的2i进制数。我们很难知道这个2i进制数有多长，所以我们先假设一个比较长的数。 我们先选六位试试，如果不够，我们再延长。
我们写出公式，然后分组：
:
\begin{align}
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{align}

7是实数，因此*d<sub>1</sub>*、*d<sub>3</sub>* 和 *d<sub>5</sub>* 是0。 剩下就是系数*d<sub>0</sub>*、*d<sub>2</sub>* 和  *d<sub>4</sub>*。 因为 d0 − 4 d2 + 16 d4  =  7 并且他们只能是 0、 1、 2 或 3 。可能的结果是： *d<sub>0</sub>* = 3,  *d<sub>2</sub>* = 3 ， *d<sub>4</sub>* = 1。 这样就找到了710的2i进制数。

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

### 示例: 虚数
找一个纯虚数的2i进制数，可以模拟实数的方法。 例如6*i*, 也可以用公式。实部全为零，虚部化为6。  6*i* 很容易看出 *d<sub>1</sub>* = 3 其他各位都是0。6*i*就是：

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

### 其他的轉換方式
對實數而言，2i进制表示法實際上與負四进制相同。要將複數轉換成2i进制可以透過將和分別轉換為負四进制再將之交錯合併來完成轉換成2i进制的工作。如果和都是有限的二进制小數，則可以使用連續的带余除法來將十进制數轉換成2i进制：

例如：35+23i=

                 35                                 23i/2i=11.5    11=12−0.5
             35÷(−4)=−8, 餘 3                12/(−4)=−3, 餘 0               (−0.5)×(−4)=2
             −8÷(−4)= 2, 餘 0                −3/(−4)= 1, 餘 1
              2÷(−4)= 0, 餘 2                 1/(−4)= 0, 餘 1
                20003                    +     101000                         +  0.2 = 121003.2
                          32i+16×2−8i−4×0+2i×0+1×3−2×i/2=35+23i


## 小数点“.”
十进制中小数点用来区分整数部分和小数部分。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{align}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{align}


因為实部为0，故 *d<sub>4</sub> = d<sub>2</sub> = d<sub>0</sub> = d<sub>-2</sub> = 0*。
接著考慮虚部部分，当 *d<sub>5</sub> = d<sub>3</sub> = d<sub> -3</sub> = 0* 并且 当 *d<sub>1</sub>=1* ， *d<sub>-1</sub>=2* 时结果正确。所以

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

### 示例（分數）

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

## 加减法
2i进制也可以做加减法。 首先要记住以下规则：

# 数字超过3时, *减* 4 "进" &minus;1 到左边第二位。
# 数字小于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      (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"