三進法
三進法(さんしんほう)とは、3 を底(てい、基(base)とも)とし、底の冪の和で数を表現する方法である。
概要[編集]
任意の正の数は次のように表すことが出来る。
( am は0,1,2のどれか)このとき、
と書くのが三進法である。
演算[編集]
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 0 | 1 | 2 |
| 1 | 1 | 2 | 10 |
| 2 | 2 | 10 | 11 |
| 0 | 1 | 2 | |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 2 |
| 2 | 0 | 2 | 11 |
三進法では、三の冪数で桁が一つ増える。
- 整数第二位 = 三の位。(10)3 = 3
- 整数第三位 = 九の位。(100)3 = 9
- 整数第四位 = 二十七の位。(1000)3 = (27)10
- 整数第五位 = 八十一の位。(10000)3 = (81)10
- 小数第一位 = 三分の一の位。(0.1)3 = 1/3
- 小数第二位 = 九分の一の位。(0.01)3 = 1/9
- 小数第三位 = 二十七分の一の位。(0.001)3 = (1/27)10
- 小数第四位 = 八十一分の一の位。(0.0001)3 = (1/81)10
三は二で割り切れない(= 奇数である)ため、三進法では 1÷2 = 0.1111… となって割り切れない。三進法や五進法などの奇数進法は、1÷2 が割り切れないため、そのどこかの桁で丸め(端数処理)を行おうとする時に、例えば六進法の 0.3 や十進法の 0.5 のような「二分すると同数」が起こらない、という特徴を持つ。さらに後述する平衡三進法には、ある桁で打ち切るだけで「一捨二入」の丸めになる、という特長を持つ。
しかし、二の次の数である三が底になっているので、「三分すると同数」が起こる、という特徴を持つ。これは、六進法の 0.2 や九進法の 0.3 などと同様である。
経済性[編集]
コンピュータなどの計算機械で、N進記法で一桁を表現・記憶するコストがNに比例すると仮定する。すると、最大値Mまでを表現・記憶できるようにするためのコストは、一桁分のコストに必要な桁数を掛けたものとなり、具体的には N × logNM である。この値が極小になるのはNがネイピア数eの時であるが、e進法は通常の数の表現には全く適さない。前後の整数では、二進と四進の場合が同じで、三進の場合が若干だが小さな値となる。よって前述の仮定の下では三進法の採用が最も経済的ということになるが、三値素子といったようなものは、特に電子的には二値素子の扱いやすさとは比べるべくもなく、稀である。が、後述する平衡三進法を使っていたソ連のコンピュータw:Setunなど、全く例がないわけでもない。
以上の計算では、仮定としてN進の場合にはN個の素子が必要としているわけだが、実際には一つの素子で、二つの状態(オン・オフ)や三つの状態(実用例のある三値素子としては、二方向の磁化と無磁化など)のものを使うことが専らのため、そもそも仮定が実際とは異なる(十進法の計算機などで、十個の素子を使うものもないわけではない)。
平衡三進法[編集]
重みを持つ各桁の値を負の側にも振る、平衡位取り記数法の最も単純な方式である(同様の考え方を拡張すれば、平衡五進法や平衡七進法が考えられる)。amの値を-1,0,1とする。位取り記数法の内に負数も含めて綺麗に表現できるという性質があり、ドナルド・クヌースのように「おそらく、あらゆる記数法の中で最も美しい」と言う者もいる[1]。しかし、二進法などと比べて応用も多くないため、ほとんど使われていない。ここでは-1をと表示することとする。また、この表記法は天秤で「1g,3g,9g,27gの分銅を用いて1~40gの質量を量る方法」とも似ている。
演算[編集]
平衡三進法では通常と若干異なる演算が必要である。加算、乗算の結果は次のようになる。
上の位に影響を及ぼすのは加算の2つだけである。二進と同様に乗算では上の位に影響を及ぼさない。減算は複雑そうに思えるが、加算の結果を知っていれば難しくない。減算ではとを入れ替えたものを加算する方法も有効である。ただし、除算は厄介である。
それぞれの表記[編集]
| 十進表記 | 三進表記 | 平衡三進法 | |
|---|---|---|---|
| 正の数 | 負の数 | ||
| 0 | 0 | ||
| 1 | 1 | ||
| 2 | 2 | ||
| 3 | 10 | ||
| 4 | 11 | ||
| 5 | 12 | ||
| 6 | 20 | ||
| 7 | 21 | ||
| 8 | 22 | ||
| 9 | 100 | ||
3値論理との関連[編集]
多値論理の一種で、それらのうちもっとも単純なものともいえる3値論理と三進法は、ある意味で関連があるとも言えるが、同一視するのは誤りである。3値論理には3値論理としての各種の論理演算が提案されているが、それらは必ずしも記数法としての三進法(通常の、あるいは平衡三進法)と対応するとは限らないし、対応させなければならない、というものでもない。論理素子・回路として3状態の方式を使い、数の表現と数値計算に三進法を採用したコンピュータがあったとして、そのコンピュータが論理演算として3値論理の論理演算を持つか否か(あるいはそれがどのような論理体系を実装したものか)も設計次第である(前述のソ連のSetunに関して、三進法の回路方式を、すなわち3値論理であると解釈したものと思われる解説などが見られることがある)。
注[編集]
- ^ 『The Art of Computer Programming』日本語版(アスキー)2巻 p. 194