# 2017q3 Homework1 (ternary) contributed by <`LinRiver`> ## Balanced Ternary 簡介 Balanced Ternary (中文稱「平衡三進位」)是以 -1(或T), 0, 1 作為數值計算系統。在不同情形下會使用 -,0,+ 表示。相較於其他數值系統(如二進位或十進位),Balanced Ternary 無需額外位元表示正負號即可所有整數系呈現。 除此之外, base-b 之 single digit 擁有 $log_{2}b$ bits 的資訊。base-3 之 single digit 擁有 $log_{2}3$ 資訊,亦是 base-2 的 1.58 倍。 base-3 數值系統之邏輯狀態分為 true , unknown , false。 如下表格整理所示: | true value | unsigned | balanced | | -------- | -------- | -------- | | $false$ | 0 | - | | $unknown$ | 1 | 0 | | $true$ | 2 | + | > TODO: 詳細閱讀 [Fast Ternary Addition](http://homepage.divms.uiowa.edu/~jones/ternary/arith.shtml),理解 base-3 的原理 (並且複習數位邏輯),整理 base-3 基礎運算操作 > [name="jserv"][color=red] ## Balanced Ternary 運算 ### 一般性表示法 $(a_{n}a_{n-1}...a_{1}a_{0}.c_{1}c_{2}c_{3}...)_{3}=\sum\limits_{i=1}^{n}a_{k}3^{k}+\sum\limits_{k=1}^{\infty}c_{k}3^{k}$,其中: * $a_{n}a_{n-1}...a_{1}a_{0}.c_{1}c_{2}c_{3}...$為在 Balanced Ternary 之表示 * $a_{k}$ 或 $c_{k}$ 為第 k 個位元所對應之係數 > 請閱讀 [Ternary computing: basics](https://github.com/ssloy/tutorials/wiki/Ternary-computing:-basics),關注於 ternary multiplexer, Unary functions, half-adder, Consensus, full adder, Overflow > [name="jserv][color=blue] >謝謝老師指導! >[name=LinRiver][color=blue] ### 邏輯運算 **AND** | | false | unknown | true | | ------- | ----- | ------- | ------- | | **false** | false | false | false | | **unknown** | false | unknown | unknown | | **true** | false | unknown | true | **OR** | | false | unknown | true | | ------- | ------- | ------- | ---- | | **false** | false | unknown | true | | **unknown** | unknown | unknown | true | | **true** | true | true | true | **NOT** | original | NOT | | -------- | ------- | | **false** | true | | **unknown** | unknown | | **true** | false | 以上運算不特別使用數值表示法,而是將真實狀態進行邏輯運算,所以 unsigned 或是 balanced ternary 皆適用。透過真實狀態呈現,可以清楚知道 unknown 狀態如何與其他狀態執行邏輯運算。 ### 數值運算 ## Balanced Ternary 優勢 ### 數值呈現 相較於二進位數值系統, * 可用較少位元呈現相同數值,例如$16_{dec}=1TT1_{bal3}=10000_{bin}$ * 相同位元數 n 下可涵蓋更多正負數值呈現,從 $-3^{n-1}$ 到 $3^{n-1}-1$ > 繼續研讀 [What is the most efficient numerical base system?](https://math.stackexchange.com/questions/446664/what-is-the-most-efficient-numerical-base-system),並依據裡頭的分析,量化上述討論 > [name="jserv"][color=red] >謝謝老師的資料! >[name=LinRiver][color=blue] ### 經濟效率呈現 ![](https://i.imgur.com/L07OGsU.png) 首先上圖是探討 radix economy 之經濟效率呈現。 * 可以清楚看到當 radix$(e)$ 時,在 五個不同的 radix$\times$width$(rw)$ 表現上皆為最低值呈現,其經濟效益最高。 * 探討 radix economy 是綜合考量了進制的數值和位元數的多寡的量化方式,其精準定義為: * $E(b, N)=b \times (log_{b}N + 1)$ ,其中 $b$ 為進制數值而 $N$ 為所欲表示之數值。 * 針對 radix economy 精準定義後,其後探討在 $b$ 為多少時可得到 $E(B, N)$ 為最小。 * 首先將 $b$ 從離散區間擴展成連續區間,將整體量化分析視為連續函數的極值問題。 * 將此連續函數 $E(b, N)=b \times (log_{b}N + 1)$ 近似為 $E(b, N)=b \times log_{b}N=(b/log_{e}b) \times log_{e}N$ ,進行一階導數定理求其臨界點和二階導數定理判斷凹口方向。 * 一階導數定理: $E(b, N)'=(log_{e}N \times (log_{e}b-1)) / (log_{e}b)^2=0$ (令其為$0$),明顯可得到 $b=e$。 * 二階導數定理: $E(b=e,N)''<0$ (二階函數圖形凹口向上),確立當 $b=e$ 時其 radix economy 的 E(e,N) 有最大值。 對於 $b=e$ 時會有最大經濟效益下,在進制數值上我們選擇 $b=3$ 。然而我將此問題進一步思考,會選擇 $b=3$ 還有那些特殊數值? 顯然是 $\pi=3.1415926...$ ,目前仍持續研究。 ## 參考資料 [Fast Ternary Addition](http://homepage.divms.uiowa.edu/~jones/ternary/arith.shtml) [Wikipedia: Balanced ternary](https://en.wikipedia.org/wiki/Balanced_ternary) [c2 wiki](http://wiki.c2.com/?ThreeValuedLogic) [st9007a共筆](https://hackmd.io/AwFgrAxgZgphCGBaAbADgEYkSAnFAjIvFMjogMyoDsAJshBPsgEzkxA=?both) [What is the most efficient numerical base system?](https://math.stackexchange.com/questions/446664/what-is-the-most-efficient-numerical-base-system) [三生萬物](http://www.global-sci.org/mc/issues/5/no4/freepdf/79s.pdf)