Try   HackMD

2017q3 Homework1 (Ternary)

contributed by < BreezeDa >

作業要求

  • 解釋 Balanced Ternary 原理
  • Balanced Ternary 的設計要解決什麼類型的問題,需要詳述實際應用案例 (如 IOTA/Tangle)。提示:從算術表達的精準度和空間使用效率去探討;
  • 針對特定的領域 (如加密貨幣),列出在 GitHub 裡頭可找到的應用案例,不僅列出程式碼,還要解說
  • 在研究的過程中,應該會對既有工具進行修改或者重新開發 (不限程式語言),也該一併指出,程式碼應該維護在 GitHub 上

Wed, Oct 2, 2017 1:52 PM 1st version

Ternary

在講到 Balanced Ternary 之前我們先簡介一下 ternary,ternary 是以 3 為基數的進位方式,中文稱為三進制,我們知道 binary 使用 0,1 表示一個數字,而在 ternary 中我們則使用 0,1,2 來表示一個數字。下方是個 10 進位轉三進位的說明。

Balanced Ternary

簡介

Balanced Ternary 與 ternary 不同,數值表示不使用 0, 1, 2 , 而是 -1, 0, 1 ( 亦可標示為 T, 0, 1 或 -, 0, + )。而且由於 -1 的引入,這種進位不需要額外的符號就能直接表示負數。下方我們 基數符號使用 b3 表示 balanced ternary

數值表示

整數

decimal balanced ternary
-7 T1T , -+-
-5 T11 , -++
-2 T1 , -+
2 1T , +-
5 1TT , +--
7 1T1 , +-+

解析

710=T1Tb3=1×32+1×31+1×30

510=T1Tb3=1×32+1×31+1×30

小數

decimal balanced ternary
-0.5
0.T
or
T.1
-0.4
0.TT11
-0.1
0.0T01
0.1
0.010T
0.4
0.11TT
0.5
0.1
or
1.T

解析

  • 一開始看到

    0.510=0.1b3,還沒搞明白這兩個是怎麼個相等法,後來看到benson326用等比級數的公式算一遍才頓悟。以下則是計算
    0.410=0.11TT
    :

    0.11TTb3=1×31+1×321×331×34+1×35+1×361×371×38+...=31+35+39+...    32+36+310+...(33+37+311+...)(34+38+312+...)

    =311134+321134331134341134=0.410

  • 由以上整數與小數的表示中可以看出正數與負數之間的轉換,其實只要將 1 轉成 T ,T 轉成 1 就可

運算

latex 表格參考 as23041248 並增加減法,並分別給予一個計算範例

加法

ADDT01TT1T00T011011T

e.g.

T1TT+1T1

TT1TT+1T1T110

T+T=T1 我將 T 寫下一位上方

減法

SUBT01T0TT1010T11T10

左欄減頂列

e.g.

T11T11TT

TT11T11T1T1011

T1=T1 我將T寫在第二位的上方 => 第二位(由右往左數)
T+1T=1

乘法

MULT01T10T00001T01

e.g.

T1T×1T

T1T×1T1T1+T1TT111

效率

Ripple Adder in Binary and Ternary Logic 可以看出在 ripple adder 中同樣的運算,ternary logic 比標準 binary 來得快

「所以應該」?這是理工人說的話嗎?

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

參考資料

wikipedia: blanced ternary
Ternary numeral system