Try   HackMD

2017q3 Homework1 (ternary)

contributed by < poyushen >

Balanced Ternary

Balanced Ternary 是一套以

3 為基底 (base-3),使用
1
(以下記做
T
)、
0
1
來表示的數值系統。

將三進位數值表示成十進位數值算法為 :

k=1iak×3k1+n=1jan×3n
其中
i
為三進位數值整數部分的位元數,
j
為三進位數值小數部分的位元數
ak
an
T
0
1

整數

"example" 的簡寫是 e.g.,不是 "ex",後者是「前」雇主一類用語
"jserv"
知道了!謝謝老師!
Amy Shen

  • e.g.
     1T0bal3=1×32+(1)×31+0×30 =93+0=6dec

    * e.g.
     T10bal3=(1)×32+1×31+0×30 =9+3+0=6dec

    * e.g.
     23dec=1×33+0×32+(1)×31+(1)×30=10TTbal3

    * e.g.
     23dec=(1)×33+0×32+1×31+1×30=T011bal3

分數(小數)

  • e.g.
     1.T0bal3=1×30+(1)×31+0×32=23dec

    * e.g.
     T.10bal3=(1)×30+1×31+0×32=23dec

    * e.g.
     16×3=0.5=10.5 0.5×3=1.5=10.5 0.5×3=1.5=10.5 ....() 16dec=0.1Tbal3

    * e.g.
     16×3=0.5=1+0.5 0.5×3=1.5=1+0.5 0.5×3=1.5=1+0.5 ...() 16dec=0.T1bal3

    由以上例子可知,Balanced Ternary 在表示負數的方式較二進位來的容易,
    只要將全部位元都
    × (1)
    即可。

Balanced Ternary 基本原理

  1. AND

    c
    T
    0
    1
    T
    T
    T
    T
    0
    T
    0
    0
    1
    T
    0
    1
    c=ab=min ( a, b )
  2. OR

    c
    T
    0
    1
    T
    T
    0
    1
    0
    0
    0
    1
    1
    1
    1
    1
    c=ab=max ( a, b )
  3. XOR

    c
    T
    0
    1
    T
    T
    0
    1
    0
    0
    0
    0
    1
    1
    0
    T
    c=ab=xor (a, b)=( a¯  b)  ( a b¯ )

Balanced Ternary Half Adder

input a
input b
ouput ci+1
output si
T
T
T
1
T
0
0
T
T
1
0
0
0
T
0
T
0
0
0
0
0
1
0
1
1
T
0
0
1
0
0
1
1
1
1
T
觀察後發現
  • Sum

    si
    T
    0
    1
    T
    1
    T
    0
    0
    T
    0
    1
    1
    0
    1
    T

    si=a+b=( ( a=1 )  ( b1 ) )   ( ( a=0 )  ( b ) )  ( ( a=1 )  ( b+1 ) )

  • Consensus

    ci+1
    T
    0
    1
    T
    T
    0
    0
    0
    0
    0
    0
    1
    0
    0
    1
    ci+1=ab=cons ( a, b )=( a  b )  ( ( a1 ) 0 )  ( ( b1 )  0 )

Balanced Ternary 運算

加法

e.g.

T1bal3+TTbal3=2dec+(4)dec=(2)dec=T1bal3

粗體為進位值

T1+TT01TT1

減法

減法運算只要先將加數

 ×(1) 再相加即可
e.g.
 1Tbal3TTbal3=2dec(4)dec=6dec=1T0bal31Tbal3+11bal3=2dec+4dec=6dec=1T0bal3

粗體為進位值

1T+11T011T0

乘法

e.g.

1Tbal3×TTbal3=2dec×(4)dec=(8)dec=T01bal3

T×T=1
1×1=1

T×1=1×T=T

1T×TTT1T1T01

除法

e.g.

 TTbal3÷1Tbal3=(4)dec÷2dec=(2)dec=T1bal3

   T   T1T  )TT+ 1T Ans:T+T=T1T1+  1T  0

TT(1T×T)=TTT1 換成
TT+1T
。加完結果為
T1
,因為餘數的首位非0,因此再除一次時商數必須放在同一個位數而非下一個位數,最後再將兩次的商相加。

e.g.

1TTTbal3÷1Tbal3=14dec÷2dec=7dec=1T1bal3

   T   10T1T  )1TTT+ T1   0TAns:  T  +  00    + 10T    TT1T1    +1T    T1     + 1T  0

Balanced Ternary 優點


根據 Radix Economy,在所有進位制中,以

e 為基底(base-
e
) 的效能最佳,其次則是 ternary,接下來才是 binary 。
balanced ternary 表示負數的方式極為簡單,只需將所有位元都
×(1)
即可,這樣的方式可以節省不少運算時間。另外,因為 ternary 是以 3 為基底 (base-3) ,在表達數值時所需用到的位元數相對也比較少。
因此,ternary 可以說是將數值儲存在記憶體中最有效率的一種進位制。

Balanced Ternary 應用

  • Ternary Computer
    第一台電子 Ternary Computer - Setun 在1958年發明,利用 Balanced Ternary 實作,在當時被莫斯科大學所使用。後來因成本考量而改用 Binary Computer,雖然 Binary Computer 所花費的時間是 Ternary Computer 的2.5倍。在1970年開發出新架構的 Ternary Computer - Setun-70,只在 Binary Computer 中以模擬程序運作。