三進法

三進法(さんしんほう)とは、3(てい、基(base)とも)とし、底のの和で数を表現する方法である。

概要

任意の正の数は次のように表すことが出来る。

am は0,1,2のどれか)このとき、

と書くのが三進法である。

記数法

位取り

三進法では012の計三つの数字を用い、を10、を11…と表記する。三で桁上がりするので、「3」の字が使えるN進法は四進法以降、「3」の字が使えて「1/3」が割り切れるN進法は六進法以降となる。桁の増加も、三進法では、三の冪数で桁が一つ増える。以下の表に、二進法(底が2)、三進法(底が3)、六進法(底が2×3)、十進法(底が2×5)での各表記法の差異を掲載する。

数列の進み方(十八まで)
二進法 三進法 六進法 十進法
0000
1111
10222
111033
1001144
1011255
11020106
11121117
100022128
1001100139
10101011410
10111021511
11001102012
11011112113
11101122214
11111202315
100001212416
100011222517
100102003018
数列の進み方(十九以降)
二進法 三進法 六進法 十進法
100112013119
101002023220
101012103321
101102113422
101112123523
110002204024
110012214125
110102224226
1101110004327
100100110010036
110001121112149
110110200013054
1000000210114464
10100011000021381
110010010201244100
三進法の位取り
三進法の位数二進数に換算三進数六進数に換算十進数に換算
整数第七位729の位101101100110000003213729
整数第六位243の位111100111000001043243
整数第五位81の位10100011000021381
整数第四位27の位1101110004327
整数第三位9の位1001100139
整数第二位3の位111033
整数第一位1の位1111
小数第一位1/3の位1/110.10.21/3
小数第二位1/9の位1/10010.010.041/9
小数第三位1/27の位1/110110.0010.0121/27
小数第四位1/81の位1/10100010.00010.00241/81

※ 位数は十進表記。

演算

三進法で記した、加算及び乗算の表は次のようになる。

加算
+012
0 012
1 1210
2 21011
乗算
×012
0 000
1 012
2 0211

で割り切れない(= 奇数である)ため、三進法では 1/2 = 0.1111… となり、「偶数」が全て割り切れない。三進法や五進法などの奇数進法は、1/2 が割り切れないため、そのどこかの桁で丸め(端数処理)を行おうとする時に、例えば六進法の 0.3 や十進法の 0.5 のような「二分すると同数」が起こらない、という特徴を持つ。さらに後述する平衡三進法には、ある桁で打ち切るだけで「一捨二入」の丸めになる、という特長を持つ。

しかし、二の次の数である三が底になっているので、「三分すると同数」が起こる、という特徴を持つ。これは、六進法の 0.2 や九進法の 0.3 などと同様である。

三進法の小数除算
単位分数除数の素因数分解三進小数六進小数十進小数
1/220.1111…0.30.5
1/330.10.20.3333…
1/4220.0202…0.130.25
1/550.01210.1111…0.2
1/62×30.0111…0.10.1666…
1/770.0102120.0505…0.142857
1/8230.0101…0.0430.125
1/9320.010.040.1111…
1/102×50.00220.03333…0.1
1/11110.002110.03134524210.0909…
1/1222×30.00202…0.030.08333…
1/16240.00120.02130.0625
1/182×320.00111…0.020.05555…
1/2022×50.00110.01444…0.05
1/25520.001002011022122021120.012350.04
1/27330.0010.0120.037
1/3622×320.000202…0.010.02777…
1/64260.00010210111220220.0032130.015625
1/81340.00010.00240.012345679

※ 単位分数と除数の素因数分解は十進表記。

経済性

コンピュータなどの計算機械で、N進記数法で一桁を表現・記憶するコストがNに比例すると仮定する。すると、最大値Mまでを表現・記憶できるようにするためのコストは、一桁分のコストに必要な桁数を掛けたものとなり、具体的には N × logNM である。この値が極小になるのはNネイピア数eの時であるが、e進法は通常の数の表現には全く適さない。前後の整数では、二進と四進の場合が同じで、三進の場合が若干だが小さな値となる。よって前述の仮定の下では三進法の採用が最も経済的ということになるが、三値素子といったようなものは、特に電子的には二値素子の扱いやすさとは比べるべくもなく、稀である。が、後述する平衡三進法を使っていたソ連のコンピュータ「Setun」など、全く例がないわけでもない。

以上の計算では、仮定としてN進の場合にはN個の素子が必要としているわけだが、実際には一つの素子で、二つの状態(オン・オフ)や三つの状態(実用例のある三値素子としては、二方向の磁化と無磁化など)のものを使うことが専らのため、そもそも仮定が実際とは異なる(十進法の計算機などで、十個の素子を使うものもないわけではないが、それではたいへんに効率が悪く、たいていは2状態の素子4個〜6個をうまく利用して十種類の値を表現している)。

平衡三進法

重みを持つ各桁の値を負の側にも振る、平衡位取り記数法の最も単純な方式である(同様の考え方を拡張すれば、平衡五進法や平衡七進法が考えられる)。amの値を-1,0,1とする。位取り記数法の内に負数も含めて綺麗に表現できるという性質があり、ドナルド・クヌースのように「おそらく、あらゆる記数法の中で最も美しい」と言う者もいる[1][2]。しかし、二進法などと比べて応用も多くないため、ほとんど使われていない。ここでは-1をと表示することとする。また、この表記法は天秤で「1g,3g,9g,27gの分銅を用いて1~40gの質量を量る方法」とも似ている。

平衡三進法の演算

平衡三進法では通常と若干異なる演算が必要である。加算、乗算の結果は次のようになる。

加算
+
乗算
×

上の位に影響を及ぼすのは加算の2つだけである。二進と同様に乗算では上の位に影響を及ぼさない。減算は複雑そうに思えるが、加算の結果を知っていれば難しくない。減算ではを入れ替えたものを加算する方法も有効である。ただし、除算は厄介である。

通常のN進法との差異

十進法 六進法 通常の三進法 平衡三進法
正の数 負の数
000
111
222
3310
4411
5512
61020
71121
81222
913100

コンピュータ

平衡三進法を採用したコンピュータにSetunがある。

3値論理との関連

多値論理の一種で、それらのうちもっとも単純なものともいえる3値論理と三進法は、ある意味で関連があるとも言えるが、同一視するのは誤りである。3値論理には3値論理としての各種の論理演算が提案されているが、それらは必ずしも記数法としての三進法(通常の、あるいは平衡三進法)と対応するとは限らないし、対応させなければならない、というものでもない。論理素子・回路として3状態の方式を使い、数の表現と数値計算に三進法を採用したコンピュータがあったとして、そのコンピュータが論理演算として3値論理の論理演算を持つか否か(あるいはそれがどのような論理体系を実装したものか)も設計次第である(前述のソ連のSetunに関して、三進法の回路方式を、すなわち3値論理であると解釈したものと思われる解説などが見られることがある)。

  1. 『The Art of Computer Programming』日本語版(アスキー)2巻 p. 194
  2. Donald E. Knuth (1998). The Art of Computer Programming. 2 (3 ed.). Addison Wesley Longman. p. 207. ISBN 0-201-89684-2. "Perhaps the prettiest number system of all is the balanced ternary notation"

関連項目

参考文献

  • ヘンリー・S・ウォーレン・ジュニアハッカーのたのしみ』 ISBN 4434046683
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.