平衡三進位

平衡三進位制（balanced ternary）是一種非標準的計數進位制，它是一種基數為的進位制系統，其中用於計數的符碼為，與標準基數 3 進位制系統對比：其中的計數符號為。以平衡三進位制所記錄的數字可以表達出全部整數，由於的引入，而且對負數不必使用額外的負號；應用在於解決秤重問題，或在一些早期的計算機中使用。

有些地方使用不同符碼來表示平衡三進制中的三個數符。本文中以 T（連在 1 上方的負號）表示 ，而 和 表示自身。其他約定包括使用 '-' 和 '+' 分別表示 和 ，。在 Setun 計算機中 表示為倒轉的阿拉伯數字一：「」。

平衡三進位制在 Michael Stifel（1544）的書《Arithmetica Integra》中出現過。它也曾出現在 Kepler 和 LéonLalanne 的作品中。對負數不必使用額外的負號這一點，使得平衡三進位制在四則運算的加、減、乘法效率，會比二進位制高。美國著名計算機學家高德納在《程式設計的藝術》一書中指出，“也許最美的進位制是平衡三進位制”。

數的表示方法

1.1 整數的轉換

平衡三進位制和其他進位制一樣，各位的數字和位權相乘然後疊加起來，就是該數的數值。數字下標 bal3 表示為平衡三進位制，而下標 dec 則為十進位制：

 10bal3 = 1×31 + 0×30 = 3dec

 10Tbal3 = 1×32 + 0×31 + (-1)×30 = 8dec

 -9dec = -1×32 + 0×31 + 0×30 = T00bal3

 8dec = 1×32 + 0×31 + (-1)×30 = 10Tbal3

平衡三進位制不需要額外的符號就可以表示負數。左起第一位若非 0 而是 T 的即為負數，若是 1 的則是正數。

在平衡三進制中，各位上的數字之和為偶數的整數是偶數；各位上的數字之和為奇數的整數是奇數。

比如：

1.2 小數

平衡三進位制和十進位制一樣，用小數點分隔整數部分和小數部分。

在平衡三進制中，四捨五入和截位的操作是等效的。

1.2.1 分數的小數化

平衡三進位制可以像十進位制一樣，可以用小數來表示分數，例如 ⅓=0.1bal3。

與十進位制、二進位制類似，部分分數有兩種表達形式。在十進位制、二進位制中，最小的數碼是 0，因此小數點後最右邊無限迴圈的 0 可以省略掉，從而變成一個整數或有限小數；而在平衡三進制中，小數點後最右邊無限迴圈的 T 不能省略，因而不能變成整數或有限小數。

1.2.2 無理數

無論對於十進位制、平衡三進位制還是其他以有理數為底數的記數系統，所有的無理數都只能表示成無限不迴圈小數。下表列出了一些代數無理數和超越無理數的十進位制與平衡三進位制的表示。

下面是另一個重要常數尤拉 - 馬斯刻若尼常數在十進位制與平衡三進制中的表示（現在仍無法確定其是有理數還是無理數）：

1.3 十進位制到平衡三進位制的轉換

十進位制轉化為平衡三進位制，可參照下述方法，先圓整後，再分別對整數部分和小數部分進行連除法和連乘法即可。

-25.4

-25.4, 圓整 #為 - 25; ‡ 餘，-0.4;♦

-25÷3=-8⅓, 圓整為 - 8; 餘，-1↑; ‡ -0.4×3=-1.2, 圓整為 - 1|; 餘，-0.2;

8÷3=-2⅔, 圓整為 - 3; 餘，1|; ‡ -0.2×3=-0.6, 圓整為 - 1 (原為 0, 底下進 T, 則為 T)|; 餘，-0.6;

3÷3=-1 , 圓整為 - 1; 餘，0|; ‡ -0.6×3= -1.8, 圓整為 1 (原為 - 1, 底下進 T, 為 - 2 再改為 1, 再向上進 T)|; 餘，-0.8;

1÷3=- ⅓, 圓整為 0; 餘，-1|; ‡ -0.8×3= -2.4, 圓整為 1 (原為 - 2,-2 改為 1, 向上進 T)↓; 餘，-0.4; 跳入迴圈

-25.410=T01T.TT113

圓整到最近的整數

當然，也可以採用另一種方法。

-25.410=-(1T1011+1TT1010+11*101T)

=-(1T*101+1TT+11/101)

=-10T1.11TT

=T01T.TT11

1.4 三進位制計算機中數的表示

計算機的初期發展過程中，蘇聯有一些實驗性質的計算機，是以平衡三進位制而不是二進位制來設計製造的，其中最著名的是由尼古拉・布魯金索夫和謝爾蓋・索博列夫建造的 Сетунь。 與現在通行的二進位制相比，平衡三進位制的實驗性設計具有許多計算科學上的優勢。 特別是，正負一致性可以加快多位乘法中的進位速率，而捨入截斷當量則會減少對分數做捨入的進位次數。 在平衡三進制中，單一位數的乘法表不需用到進位，而加法表只會有兩個對稱進位而不是三個。

注：以下部分以 “'” 為十進位制數萬位分隔符

1.4.1 基本概念

位（trit）：對稱三進位制的數位；

位元組（tryte）：莫斯科大學的Сетунь以 6 位為 1 個位元組，單位元組整數的表示範圍為：-364~+364；

字（word）：參照二進位制，以 2 個位元組為 1 個字，單字整數的表示範圍為：-26'5720~+26'5720;

1.4.2 整數

紐約州立大學在 1973 年開發的測試機 Ternac，採用 24 位表示一個整數，表示範圍為 - 1412'1476'8240~+1412'1476'8240

1.4.3 定點數

定點數的表示方法和整數一樣。只是會預先指定小數點的位置。

比如採用 48 位表示一個實數，整數部分、小數部分各 24 位。則，表示範圍為 - 1412'1476'8240.5~+1412'1476'8240.5，精度為 3-24（3.54*10-12）

1.4.4 浮點數

Ternac，採用 48 位表示一個實數，其中尾數 42 位，指數 6 位。

參照 IEEE754 的浮點數表示法，對稱三進位制的表示法如下：

1 個符號位（整數部分）+ 尾數域 41 位（小數部分）+ 指數域 6 位

整數部分為 1 是正的規約數。表示範圍為 0.53-364+0.53-405~0.53365-0.53323

整數部分為 0 的是零附近的數，是非規約數。非規約數的指數固定為 - 364，指數域併入尾數。表示範圍為 0.53-411-0.53-364~0.53-364-0.53-411，精度為 0.5*3-411。

邏輯常量

三進位制計算機，以三值邏輯為基礎，有三個邏輯狀態值 —— 真、假、未知。我們用 表示真、 表示未知，而 則表示假。

三進位制計算機中資訊的表示

三進位制計算機中，以平衡三進製為資訊進行編碼。

我們可以以 12 位為單位，對文字進行編碼作為標準資訊交換碼（STUCII，Standard Ternary Unified Code for Information Interchange）。其容量為 53'1441 個字元，約是 16bits 容量的 8.1 倍。

運算

4.1 加減乘除四則運算

平衡三進位制和二進位制一樣，乘法運算等效於移位疊加運算。

4.1.1 單雙位平衡三進位制加法表、乘法表、除法表

注：減法是左列減去頂行，除法是左列除以頂行

1 從上表中可以看出，雙位數相加可能會變成單位數，雙位數相減可能會變成三位數，雙位數相乘可能可能仍是雙位數。這種情況在十進位制和二進位制中不會發生。

4.1.2 多位數的加減法

就是逐位做加減法。

減法，亦可以逐位取反後，換做加法

比如

1TT1TT.1TT1 1TT1TT.1TT1 1TT1TT.1TT1 1TT1TT.1TT1

 11T1.T - 11T1.T - 11T1.T -> + TT1T.1

------------ -------------- ---------------

1T0T10.0TT1 1T1001.TTT1 1T1001.TTT1

 1T + T T1 + T T1

------------ ---------------- ----------------

1T1110.0TT1 1110TT.TTT1 1110TT.TTT1

 T + T 1 + T 1

------------ ---------------- ----------------

1T0110.0TT1 01100T.TTT1 01100T.TTT1

4.1.3 乘法

可以採用類似於十進位制的各種方法。

比如

1TT1.TT

× T11T.1

------------

1TT.1TT

T11T.11

1TT1T.T

1TT1TT

+T11T11

------------

0T0000T.10T

4.1.4 除法

平衡三進位制的除法和十進位制的除法類似。

但是，大家已經知道，0.5 在平衡三進制中有 0.11111… 和 1.TTTT… 兩種表示式，也就是說，如果被除數超過除數的一半，商的當前位就要置 1 或 T。

1TT1.TT

-------------

T11T.1 ) T0000T.10T

T11T1

--------

1T1T0

1TT1T

--------

111T

1TT1T

---------

T00.1

T11T.1

---------

1T1.00

1TT.1T

---------

1T.T1T

1T.T1T

--------

0

4.1.5 開平方

平衡三進位制開平方和十進位制、二進位制類似。但和除法一樣，要比較的是半除數。例如：

1 1 T 1 T T 0 0 ...

------------------------

√1T 10.10, 置 1

1T0 1.T0

--------

110 1T0T 1T0T>110, 置 1

10T0 10T0

--------

1110 T1T0T T1T0T111T0, 置 1

10T110 10T110

----------

111T10 TT1TT0T TT1TT0T<TTT1T0, 置 T

100TTT0 T001110

-----------

111T1T0 T001TT0T T001TT0T<TTT1T10, 置 T

10T11110 T01TTTT0

------------

111T1TT0 T001T0T TTT1T110<T001T0T<111T1TT0, 置 0

T

-----------

111T1TT00 T001T000T TTT1T1100<T001T000T<111T1TT00, 置 0

T

-------------

111T1TT000 T001T00000T

...

4.2 邏輯運算

以下是平衡三進位制邏輯運算真值表。