$2017q3 \ Homework1(ternary)$
===
contributed by <`TsengWen`>
###### tags: `Balanced Ternary`
---
### Review by `williamchangTW`
- 在文章中提到的,設計中有避掉一些容易混淆的字,推測考量到資訊安全問題,這是我在研究中沒有窺見的一隅,受教了謝謝
- 或許可以針對上述的想法繼續往下個議做延伸,應該是一個可以完成的部份,期待您的討論
>小弟坐井觀天,如有冒犯請見諒[name="williamchangTW"]
---
## 作業要求
1. 研讀 Balanced Ternary,並依據 課前測驗參考解答: Q1 的風格和探討方式,涵蓋以下:
- [x] 解釋 Balanced Ternary 原理;
- [ ]Balanced Ternary 的設計要解決什麼類型的問題,需要詳述實際應用案例 (如 IOTA/Tangle)。提示:從算術表達的精準度和空間使用效率去探討;
- [ ] 針對特定的領域 (如加密貨幣),列出在 GitHub 裡頭可找到的應用案例,不僅列出程式碼,還要解說;
- [ ]在研究的過程中,應該會對既有工具進行修改或者重新開發 (不限程式語言),也該一併指出,程式碼應該維護在 GitHub 上;
2. 其他:
## $Balanced\ Ternary$
>數字與中文間記得以空白隔開!
>[name=課程助教][color=red]
>>ok
>>[name=TsengWen][color=#7affef]
### 平衡三進位:
是一種以 3 為基數,-1、0、1 為基本數位的進位。
#### 特點
1. 由於 -1 的引入,這種進位不需要額外的符號就能直接表示負數。正因為這一點,使得平衡三進位在加減法和乘法方面的效率要比二進位高。
2. 各位上的數字之和為偶數的整數是偶數;各位上的數字之和為奇數的整數是奇數。
##### 例如 :
$$\ + = \ 1\\
0 \ = 0\\
\ - = -1\\
$$
---
$$
42 = \begin{matrix}
3^4 & 3^3 & 3^2 &3^1&3^0&\\
+ & - & - &- &0 \\
81 & -27 & -9 &-3&+\ 0\\
\end{matrix}
$$
---
$$
平衡三進位
$$
>下兩個表格請改以縱向的表格表示,或是切成上下兩部分,塞在一起會超出畫面
>[name=課程助教][color=red]
>>OK[name=TsengWen][color=#7affef]
\begin{array}
{c|c|c|c|c|c|c|c|c|c|c}
\ 十進位 &-9&-8&-7&-6&-5&-4&-3&-2&-1 \\
\hline \\平衡三進位
&-00
&-0+
&-+-
&-+0
& -++
& 0--
& -0-
& 0-+
& 00-
\end{array}
\begin{array}
{c|c|c|c|c|c|c|c|c|c|c}
\ 十進位 &9&8&7&6&5&4&3&2&1 \\
\hline \\平衡三進位
&+00
&+0-
&+-+
&+-0
& +--
& 0++
& 0+0
& 0+-
& 00+
\end{array}
- 觀察發現:正負號轉換只需將 + 轉 - 和 - 轉 +
相較原本2's complement 反向 再加一 ,或許能夠少去加一的步驟。
---
#### 小數
平衡三進位和十進位一樣,用小數點分隔整數部分和小數部分。
\begin{array}
{c|c|c|c|c|c|c|c|c|c|c}
\ 十進位 &-0.5&-0.4&-0.3&-0.2&-0.1 \\
\hline \\平衡三進位
& 0.\overline{-}或-.\overline{+}
& 0.\overline{--+\ +}
& 0.\overline{-\ 0+0}
& 0.\overline{-++\ -}
& 0.\overline{0-0\ +}
\end{array}
\begin{array}
{c|c|c|c|c|c|c|c|c|c|c}
\ 十進位 &0.5&0.4&0.3&0.2&0.1 \\
\hline \\平衡三進位
& 0.\overline{+}或+.\overline{-}
& 0.\overline{++-\ -}
& 0.\overline{+\ 0-0}
& 0.\overline{+--\ +}
& 0.\overline{0+0\ -}
\end{array}
- 驗算0.5的兩種表示
- $0.\overline{+}$
$$\frac{1}{3}+\frac{1}{9}+\frac{1}{27}+\frac{1}{81}\ldots=\frac{\frac{1}{3}}{1-\frac{1}{3}}=\frac{\frac{1}{3}}{\frac{2}{3}} =\frac{1}{2}$$
- $+.\overline{-}$
$$1-\frac{1}{3}-\frac{1}{9}-\frac{1}{27}-\frac{1}{81}\ldots=1-(\frac{1}{3}+\frac{1}{9}+\frac{1}{27}+\frac{1}{81}\ldots)=1-\frac{1}{2}=\frac{1}{2}$$
---
#### 運算
\begin{array}{c|lcr}
\ + & - & 0 & +\ \\
\hline
\ - & +- & + & 0\ \\
0 & \ + & 0 & -\ \\
\ + & \ 0 & - & -+
\end{array}
\begin{array}{c|lcr}
\ * & - & 0 & + \\
\hline
\ - & + & 0 & - \\
0 & 0 & 0 & 0 \\
\ + & - & 0 & +
\end{array}
## $Ternary$
### 單位
- 位(trit) ----> 0,1,2
- 位元組(tryte) ----> 9-trit
- 字元(word) ----> 27-trit
### 範圍
- 一個word - 表達 $3^{27}$ = $7,625,597,484,987$值
### Heptavintimal Encoding of Ternary Values
- 為了讓人們方便使用Ternary Number,美國愛荷華州立大學將Ternary Number轉換成九進制或是二十七進制,像是將Binary Number轉換成octal(base 8)或是hexadecimal(base 16)。
![](https://i.imgur.com/D4Sn2FL.png)
- 其中跳過容易視覺混淆的字母
\begin{array}{c|c}
\ input&equivalent \\
\hline
\ I, J, L, Y & 1 \\
\ O, Q & 0\\
\ S & 5 \\
\ U, W & V \\
\end{array}
### 浮點數
![](https://i.imgur.com/D8Whlls.png)
- 因為balance ternary的特性,可以不須額外trit來表示正負符號。
- 給定一個27-trit word 表示浮點數,由3個tryte所組成,使用1個tryte表示指數。
- 指數部分,使用3's complement來表示。
- 不使用隱藏位元
## Fast Ternary Multiplication and Division
### 乘法
$$在不假設特殊硬體架構下,將數表示成\ \ \ a = (a<<_3 c) + d\\
<<_3 為向左位移一個trit$$
---
\begin{array}{l|l}
a\ \times 0 = 0 & a\ \times 15 = (a\ \times 5 )\times 3 \\
a\ \times 1 = a & \\
\ & a\ \times 16 = (a\ \times 4 )\times 4 \\
a\ \times 2 = (a<<_3 0) \ +\ a \\
a\ \times 2 = (a<<_3 1) \ -\ a & t\ = a\ \times 8 \\
\ & a\ \times 17 = (a<<_3 2) \ +\ t \\
a\ \times 3 = (a<<_3 1) \\
a\ \times 4 = (a<<_3 1) \ +\ a &a\ \times 18 = (a\ \times 6 )\times 3 \\
\ \\
t\ = a\ \times 2 & t\ = a\ \times 2\\
a\ \times 5 = (a<<_3 1) \ +\ t & a\ \times 19 = (t<<_3 2) \ +\ a\\
\ \\
a\ \times 6 = (a\ \times 2 )\times 3 & a\ \times 20 = (a\ \times 10 )\times 2\\
\ \\
t\ = a\ \times 2 &a\ \times 21 = (a\ \times 7 )\times 3\\
a\ \times 7 = (t<<_3 1) \ +\ a \\
\ & a\ \times 22 = (a\ \times 11 )\times 2\\
a\ \times 8 = (a<<_3 2) \ -\ a \\
a\ \times 8 = (a\ \times 2 )\times 4 & t\ = a\ \times 2\\
\ & u=(a<<_3 1)\ +\ t\\
a\ \times 9 = (a<<_3 2)&a\ \times 23 = (t<<_3 2) \ +\ u\\
\ \\
a\ \times 10 = (a<<_3 2) \ +\ a & a\ \times 24 = (a\ \times 6)\times4\\
\ \\
t\ = a\ \times 2 & a\ \times 25 = (a\ \times 5 )\times 5 \\
a\ \times 11 = (a<<_3 2) \ +\ t \\
\ & a\ \times 26 = (a\ \times 2 )\times 13\\
a\ \times 12 = (a\ \times 3 )\times 4\\
\ \\
t\ = a\ \times 4 \\
a\ \times 13 = (a<<_3 2) \ +\ t \\
\end{array}
## 除法
將除法轉換成乘一個對應的數。
\begin{array}{l}
\frac a2 = a × \frac12 = a × 0.11\overline1_3 \\
\frac a3 = a × \frac13 = a × 0.1_3 \\
\frac a4 = a × \frac14 = a × 0.0202\overline{02}_3 \\
\frac a5 = a × \frac15 = a × 0.01210121\overline{0121}_3 \\
\frac a6 = a × \frac16 = a × 0.011\overline1_3 \\
\frac a7 = a × \frac17 = a × 0.\overline{010212}_3 \\
\frac a8 = a × \frac18 = a × 0.0101\overline{01}_3 \\
\frac a9 = a × \frac19 = a × 0.01_3 \\
\frac a{10} = a × \frac1{10} = a × 0.0022\overline{0022}_3
\end{array}
### 參考網站
- [平衡三進位 - 維基百科,自由的百科全書](https://zh.wikipedia.org/wiki/%E5%B9%B3%E8%A1%A1%E4%B8%89%E8%BF%9B%E5%88%B6)
- [The ternary computer](http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=5176262)
- [Standard Ternary Logic](http://homepage.cs.uiowa.edu/~jones/ternary/)
- [Ternary Data Types for C Programmers](http://homepage.cs.uiowa.edu/~jones/ternary/libtern.shtml)
- [Arithmetic with Binary-Encoded Balanced Ternary Numbers](http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=6810470)
## $\LaTeX$
- 是一種基於TEX的排版系統,適用於生成高印刷品質的科技和數學、化學類文件。
### MathJax語法
可以使用 **MathJax** 語法 來產生 *LaTeX* 數學表達式:
The *Gamma function* satisfying $\Gamma(n) = (n-1)!\quad\forall n\in\mathbb N$ is via the Euler integral
$$
x = {-b \pm \sqrt{b^2-4ac} \over 2a}.
$$
> 更多關於 **LaTeX** 數學表達式 [請至這裡](http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)
### 參考網站
- [Latex in Ubuntu](http://pangomi.blogspot.tw/2012/11/latex-in-ubuntu.html)
- [語法教學](http://www.cs.nthu.edu.tw/~cherung/teaching/2009cs5321/link/latex.pdf)