# 2017q3 Homework1 (ternary) contributed by <`EdisonHsien`> ## Balanced Ternary 平衡三進制,是一種以3為基數,-1(以下用T表示)、0、1為基本數位的進位。由於-1的引入,這種進位不需要額外的符號就能直接表示負數。 ## 參考專案與文獻 * [FATESAIKOU共筆](https://hackmd.io/OwNgRgzADBAmAsBaStiPvCAORWBmAjEgKxh74DGFBeEAnCEA?both) ## 理論基礎 ### 運算邏輯 mutiplexer: ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/multiplexer.png) 此單元透過改變三個 in 腳位的值,其運作方式是根據 sel 訊號為 -1、0 還是 +1 來決定接通 inN、inO 還是 inP 的訊號。 increase 1: ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/A%2B1.png) decrease 1: ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/A-1.png) 由Sel來控制輸出是inN , inO , inP。 max(A, 0): ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/max(A%2C0).png) min(A, 0): ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/min(A%2C0).png) 以上兩者```max(A, 0)```意指挑出 A 與 0 之間比較大的數值,```min(A, 0)```則是挑出較小的 half adder: 首先是 sum: ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/A%2BB.png) full adder: sum: ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/A%2BB%2BCin.png) overflow: ![](https://raw.githubusercontent.com/ssloy/tutorials/master/ternary/doc/overflow.png)