# 2017q3 Homework1(Ternary) contributed by < `kevin55216` > > #### Review by `maskashura` >- 對bal3有明確的解說運算,但內容沒有針對 ternary adder 做分析 >- 需補充 ternary 在 IOTA 上的應用,這部份會是本次作業的重點! > > #### Review by `jackyhobingo` > - 在英文與中文中間應該有空格做區分 > - Balanced Ternary 的優缺點敘述有點簡略,不應該只是比較少位元表示就比較有優勢,可以參考 [Radix_economy](https://en.wikipedia.org/wiki/Radix_economy) > - 提出為什麼 tenary 電腦沒有普及的問題,但回答感覺並沒有到點,就好像任何只要需要重新實作的系統都不適合發展, ## Balanced Ternary 原理 Balanced Ternary 不同於二進位以 $0、1$ 表達的方式,Balanced Ternary 使用 $-1(T)、0、1$$(或用-,0,+來表示)$三個基本數位來表示。Balanced Ternary 轉換為十進位的公式如下: $\sum_{i=1}^n (a_i)3^{(i-1)} for \ a_i=-1\ or\ 0\ or\ 1$ 下面以正負整數做比較。 | 十進位 | $14$ | $-14$ | | -------- | -------- | -------- | | 二進位 | $1110$ | $10010$ | | Balanced Ternary| $+---$ |$-+++$ | 二進位在$負數(-14)$的表現上必須在前面補上1且需要做$正數14$的補數$(0001)加1$;而Balanced Ternary只需要對正數做補數。 並且以二進位來說$10010$若不告訴閱讀者這是負數則有可能為$18$或者$-14$這兩種數,但Balanced Ternary則不然$T111$只有$-14$這一數。我們可以認為Balanced Ternary這一進位法是專為正負數系統所設計進位法。 另外在加法部分以下表作呈現。而在減法我們可以僅在前端做一個補數即 $x-y=x+(-y)$ | $S$ | $-$ | $0$ | $+$ | | $C$| $-$ | $0$ | $+$ | | - | - | - | - |-| -| - | - | - | | $-$ | $+$ | $-$ | $0$ | |$-$ | $-$ | $0$ | $0$ | | $0$ | $-$ | $0$ | $+$ | | $0$| $0$ | $0$ | $0$ | | $+$ | $0$ | $+$ | $-$ | | $+$| $0$ | $0$ | $+$ | 乘法部分 | $\times$ | $-$ | $0$ | $+$ | | - | - | - | - | | $-$ | $+$ | $0$ | $-$ | | $0$ | $0$ | $0$ | $0$ | | $+$ | $-$ | $0$ | $+$ | 例如:$7\times(-11)=1T1\times TT1=-77$ $\ \ \ \ \ 1T1\\ \times \ \underline{TT1}\\ \ \ \ \ \ \ 1T1\\ \ \ \ T1T\\ \underline{T1T\ \ \ \ \ }\\ T0011=-77$ 在除法部分 $A\div B$ 我們必須先求出$C=0.5B$,且$0.5$在Balanced Ternary中是以$0.\overline{1}\ or\ 1.\overline{T}$ 表示。 若$-C<A<C$則商為$0$,若$A>C,A<-C$則商分別為$1,T$。 我以[wikipedia](https://en.wikipedia.org/wiki/Balanced_ternary)中的範例來解說。 $111T\div 11$ $0.5\times 11=1T$ $第一層\ 11>1T=>set\ 1\\ 第二層\ T1<01<1T=>set\ 0\\ 第三層\ 1T=1T=>set\ 0.\overline{1}\ or\ 1.\overline{T}\\ 得解\ 100.\overline{1}\ or\ 101.\overline{T}$ 再來我提自己的例子$6\div 8$ $A=1T0,B=10T,C=11$ $\ \ \ \ \ \ \ \ \ \ \ 01.\overline{T1}$ $10T\overline{)1T0\ \ \ \ \ \ }$ $\ \ \ \ \ \ \ \ \underline{10T}$ $\ \ \ \ \ \ \ \ 0T1.0$ $\ \ \ \ \ \ \ \ \ \ \underline{T0.1}$ $\ \ \ \ \ \ \ \ \ \ 01.T0$ $\ \ \ \ \ \ \ \ \ \ \ \ \underline{1.0T}$ $\ \ \ \ \ \ \ \ \ \ \ \ 0.T1$ $第一層\ 11>1T>TT=>set\ 0, 餘1T\\ 第二層\ 11<1T0=>set\ 1, 餘T1\\ 第三層\ TT>T10=>set\ T, 餘1T\\ 第四層\ 11<1T0=>set\ 1\\ 得解\ 1.\overline{T1}$ ## Balanced Ternary 的優缺點 ### 在數值系統 在數值統中,高位元表示毋庸置疑能以較少位元數表示同一數,例如: 同樣是15,在16進位下, 只要0xE,3進位(0,1,2)需要120,2進位則需要1111。 但在平衡三進位中,特別強大的是其在負數上的表現,不需要多一位元來表示正負號,且在正負轉換 只需要進行補數。 ### 實際上 上片敘述了種種ternary的強大之處,但為什麼ternary電腦沒有普及呢?![](https://i.imgur.com/Zk8QCbG.png) 我們可以參考[electronics](https://electronics.stackexchange.com/questions/116502/suggestions-for-ternary-computer-parts)上的一張ternary的電路圖。 若現今的電腦系統要改成三進位電路就要重新設計,電路上的議題也會增加,許多的指令架構都要 從新做設計。 ## 參考資料 [wikipedia](https://en.wikipedia.org/wiki/Balanced_ternary) [techopedia](https://www.techopedia.com/why-not-ternary-computers/2/32427) [electronics](https://electronics.stackexchange.com/questions/116502/suggestions-for-ternary-computer-parts)