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進制轉換為十進制可以用標準公式。這個公式是:

 進制數 十進制數為

 

2i進制中, 

示例

  轉換為十進制,可按照上述公式填入相應數字:

 

再比如:   十進制是

 

十進制轉換到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進制數有多長,所以我們先假設一個比較長的數。 我們先選六位試試,如果不夠,我們再延長。 我們寫出公式,然後分組:

 

7是實數,因此d1d3d5 是0。 剩下就是係數d0d2d4。 因為 d0 − 4 d2 + 16 d4 = 7 並且他們只能是 0、 1、 2 或 3 。可能的結果是: d0 = 3, d2 = 3 , d4 = 1。 這樣就找到了710的2i進制數。

 

示例: 虛數

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

 

其他的轉換方式

對實數而言,2i進制表示法實際上與負四進制相同。要將複數x+iy轉換成2i進制可以透過將xy/2分別轉換為負四進制再將之交錯合併來完成轉換成2i進制的工作。如果xy都是有限的二進制小數,則可以使用連續的帶餘除法來將十進制數轉換成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的正數和負數冪。帶小數點時,公式是:

 

 

 

示例

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

 

因為實部為0,故 d4 = d2 = d0 = d-2 = 0
接着考慮虛部部分,當 d5 = d3 = d -3 = 0 並且 當 d1=1d-1=2 時結果正確。所以

 .

示例(分數)

 轉換為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。我們得到結果 

示例:減法

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

         - 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

也就是  

查表轉換

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

示例

 
 
 

參見

參考資料

  • 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).