2i進位,是由高德納於1995年提出來的,當時用作高中科學精英研究用。它是一種以2i為基數的非標準進位制。這種進位以0、1、2、3為基本數碼[1],能夠獨一無二的表示全體複數。
轉換2i進位到十進位[編輯]
2i的冪
k
|
(2i)k
|
-5 |
−1/32i
|
-4 |
1/16
|
-3 |
1/8i
|
-2 |
−1/4
|
-1 |
−1/2i
|
0 |
1
|
1 |
2i
|
2 |
−4
|
3 |
−8i
|
4 |
16
|
5 |
32i
|
6 |
−64
|
7 |
−128i
|
8 |
256
|
2i的冪
將2i進位轉換為十進位可以用標準公式。這個公式是:
進位數
的十進位數為
![{\displaystyle \cdots +d_{3}\cdot b^{3}+d_{2}\cdot b^{2}+d_{1}\cdot b+d_{0}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5443e79b16a5a949a6273d7050e13a58f3d435e3)
2i進位中,
。
將
轉換為十進位,可按照上述公式填入相應數字:
![{\displaystyle 1\cdot (2i)^{3}+1\cdot (2i)^{2}+0\cdot (2i)^{1}+1\cdot (2i)^{0}=-8i-4+0+1=-3-8i}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ad0ae7ec9052c96758b8b1547a728537ec0babbc)
再比如:
十進位是
![{\displaystyle 1\cdot (2i)^{6}+3\cdot (2i)^{4}+3\cdot (2i)^{0}=-64+3\cdot 16+3=-13}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bf6786f7c178bcb597cfa33b7c88931f5aad072e)
十進位轉換到2i進位[編輯]
也能將十進位數轉換為2i進位。 每個複數(形如a+bi) 都有個2i進位形式。 大多十進位數都只有1個形式,但像1這樣的數在十進位中有兩種形式1.0 = 0.9, 相對應的 1/5有兩種2i進位形式:1.03002i = 0.00032i。
要轉換十進位數,先將實部和虛部分別轉換為2i進位數,然後加到一起即可。 比如, –1+4i 等於–1 加上 4i,–1的2i進位數是103, 4i的2i進位數是20,因此 –1+4i = 1232i。
轉換虛部時,可以先乘以2i,得到一個實數;然後將這個實數轉換為2i進位,然後右移一位即可(等效於除以 2i)。 例如,虛部是 6i,先將6i 乘以2i 得到 –12,化為2i進位是3002i,然後右移一位,得到: 6i = 302i。
轉換實數,可以用方程組來求解。
示例:實數[編輯]
我們來求解7的2i進位數。我們很難知道這個2i進位數有多長,所以我們先假設一個比較長的數。 我們先選六位試試,如果不夠,我們再延長。
我們寫出公式,然後分組:
![{\displaystyle {\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}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f18796a3c84ae43b67abd4b1240898a99cc745ad)
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進位數。
![{\displaystyle {\begin{aligned}7_{10}=010303_{2i}=10303_{2i}.\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/502cfb75ec0cfee168c495881f5d050bcbff8d0b)
示例: 虛數[編輯]
找一個純虛數的2i進位數,可以模擬實數的方法。 例如6i, 也可以用公式。實部全為零,虛部化為6。 6i 很容易看出 d1 = 3 其他各位都是0。6i就是:
![{\displaystyle {\begin{aligned}6i_{10}=30_{2i}\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/905765b33c36fdf243e3a52eb251208a7522e523)
其他的轉換方式[編輯]
對實數而言,2i進位表示法實際上與負四進位相同。要將複數x+iy轉換成2i進位可以透過將x和y/2分別轉換為負四進位再將之交錯合併來完成轉換成2i進位的工作。如果x和y都是有限的二進位小數,則可以使用連續的帶餘除法來將十進位數轉換成2i進位:
例如:35+23i=121003.22i
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進位中小數點一樣可以用,比如
中,小數點用來分割b的正數冪和負數冪。帶小數點時,公式是:
![{\displaystyle 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}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2684b2ec54ca283523079ca7982c856740837998)
或
![{\displaystyle 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}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c2a6f75e0e277bdea6f29e45c7a494fbea0e92ee)
將i轉換為2i進制,沒有小數點的話,可能沒辦法做到。因此:
![{\displaystyle {\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}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8a0e23bdf96f580ad008ca67aacfa89a1e13d143)
因為實部為0,故 d4 = d2 = d0 = d-2 = 0。
接著考慮虛部部分,當 d5 = d3 = d -3 = 0 並且 當 d1=1 , d-1=2 時結果正確。所以
.
示例(分數)[編輯]
將
轉換為2i進制,其結果為-0.0203。
加減法[編輯]
2i進位也可以做加減法。 首先要記住以下規則:
- 數字超過3時, 減 4 "進" −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。我們得到結果
。
示例:減法[編輯]
減法和加法類似。下面是例子:
- 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。 結果就是
。
乘法也要用到上面兩點。先逐位相乘,然後疊加。比如:
11201
20121 x
--------
11201 <--- 1 x 11201
12002 <--- 2 x 11201
11201 <--- 1 x 11201
00000 <--- 0 x 11201
12002 + <--- 2 x 11201
------------
120231321
也就是
。
查表轉換[編輯]
下面是一個常用的複數對照表。我們可以用疊加的方法來轉換複數
十進位 |
2i進位
|
1 |
1
|
2 |
2
|
3 |
3
|
4 |
10300
|
5 |
10301
|
6 |
10302
|
7 |
10303
|
8 |
10200
|
9 |
10201
|
10 |
10202
|
11 |
10203
|
12 |
10100
|
13 |
10101
|
14 |
10102
|
15 |
10103
|
16 |
10000
|
|
十進位 |
2i進位
|
−1 |
103
|
−2 |
102
|
−3 |
101
|
−4 |
100
|
−5 |
203
|
−6 |
202
|
−7 |
201
|
−8 |
200
|
−9 |
303
|
−10 |
302
|
−11 |
301
|
−12 |
300
|
−13 |
1030003
|
−14 |
1030002
|
−15 |
1030001
|
−16 |
1030000
|
|
十進位 |
2i進位
|
1i |
10.2
|
2i |
10.0
|
3i |
20.2
|
4i |
20.0
|
5i |
30.2
|
6i |
30.0
|
7i |
103000.2
|
8i |
103000.0
|
9i |
103010.2
|
10i |
103010.0
|
11i |
103020.2
|
12i |
103020.0
|
13i |
103030.2
|
14i |
103030.0
|
15i |
102000.2
|
16i |
102000.0
|
|
十進位 |
2i進位
|
−1i |
0.2
|
−2i |
1030.0
|
−3i |
1030.2
|
−4i |
1020.0
|
−5i |
1020.2
|
−6i |
1010.0
|
−7i |
1010.2
|
−8i |
1000.0
|
−9i |
1000.2
|
−10i |
2030.0
|
−11i |
2030.2
|
−12i |
2020.0
|
−13i |
2020.2
|
−14i |
2010.0
|
−15i |
2010.2
|
−16i |
2000.0
|
|
![{\displaystyle 5=16+(3\cdot -4)+1=10301_{2i}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/959d4876cd0dceb0b6b281f10b6e0dd052c23ca2)
![{\displaystyle i=2i+2\left(-{\frac {1}{2}}i\right)=10.2_{2i}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6f38245a76da69b37a10eed70e32e09c8c56db27)
![{\displaystyle 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}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bde4b250101ec3d6e04818dd47ccf937c8fe1893)
參考資料[編輯]
- 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).