# 2017q3 Homework1 (Ternary) contributed by < `yayachen` > ## Balanced Ternary 數值系統 相較於 Ternary 是以 `0`、`1`、`2` 表示 ,Balanced Ternary 是以 `-1`、`0`、`1` 來表示( 以下 `-1` 用 `T` 來代表 )。我們接著觀察下表可以發現在 Balanced Ternary 中要表示負數只用把 `1` 與 `T` 交換就好,相較於 Ternary 更節省空間。 | Dec | Balanced Ternary | |----------|------------------ | |-5 |T11 | |-4 |0TT | |-3 |0T0 | |-2 |0T1 | |-1 |00T | |0 |000 | |1 |001 | |2 |01T | |3 |010 | |4 |011 | |5 |1TT | * 負數的表示也可由下式證明 : >$\ \ \ 2_{dec}\ = \ 1_{bal3}+1_{bal3}\ =\ 1T_{bal3}$ >$-2_{dec}\ = \ T_{bal3}+T_{bal3}\ =\ T1_{bal3}$ ### 四則運算 * #### Addition | $+$ | T | 0 |1 | | - | - | - |- | | **T** |T1 | T |0 | | **0** | T | 0 |1 | | **1** | 0 | 1 |1T| * #### Subtraction | $+$ | T | 0 |1 | | - | - | - |- | | **T** | 0 | T |T1 | | **0** | 1 | 0 |T | | **1** | 1T | 1 |0| * #### Multiplication | $+$ | T | 0 |1 | | - | - | - |- | | **T** |1 | 0 |T | | **0** | 0 | 0 |0 | | **1** | T | 0 |1| * #### Division | $+$ | T | 0 |1 | | - | - | - |- | | **T** |1 | NaN |T | | **0** | 0 | NaN |0 | | **1** | T | NaN |1| ### 邏輯運算 * #### NOT | INPUT | NOT | | -------| ----| | T | 1 | | 0 | 0 | | 1 | T | * #### AND | | T | 0 | 1 | | -----| --| --| --| | **T**| T | T | T | | **0**| T | 0 | 0 | | **1**| T | 0 | 1 | > 比較 Binary 的 `AND` 只要有一個 `0` 就為 `0` > Balanced Ternary 則是有一個 `T` 就為 `T` > 如果沒有 `T` ,有一個 `0` 就為 `0` (與 Binary 一樣)。 * #### OR | | T | 0 | 1 | | -----| --| --| --| | **T**| T | 0 | 1 | | **0**| 0 | 0 | 1 | | **1**| 1 | 1 | 1 | > 必較 Binary 的 `OR` 只要有一個 `1` 就為 `1` > Balanced Ternary 也一樣只要有一個 `1` 就為 `1` > 如果沒有 `1` ,有一個 `0` 就為 `0` ## github案例 ## 已開發案例修改 ## 參考資料 1. [wikipedia -- balanced ternary](https://en.wikipedia.org/wiki/Balanced_ternary) 2. [c2 wiki](http://wiki.c2.com/?ThreeValuedLogic)