三進法のソースを表示
←
三進法
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
{{Redirect|3進数|有理数を含む3進数|p進数}} '''三進法'''(さんしんほう)とは、[[3]] を[[底]](てい、基(base)とも)とし、底の[[冪]]の和で数を表現する方法である。 == 概要 == 任意の正の数は次のように表すことが出来る。 :<math>a_N3^N + a_{N-1}3^{N-1} + \cdots + a_1 3 + a_0 + {a_{-1}\over 3} + {a_{-2}\over 3^2} + \cdots </math> ( ''a<sub>m</sub>'' は0,1,2のどれか)このとき、 :<math>a_Na_{N-1}\ldots a_1a_0.a_{-1}a_{-2}\ldots</math> と書くのが三進法である。 == 記数法 == ===位取り=== 三進法では[[0]]、[[1]]、[[2]]の計三つの数字を用い、[[3|三]]を10、[[4|四]]を11…と表記する。三で桁上がりするので、「[[3]]」の字が使えるN進法は[[四進法]]以降、「3」の字が使えて「[[1/3]]」が割り切れるN進法は[[六進法]]以降となる。桁の増加も、三進法では、[[3の冪|三の冪数]]で桁が一つ増える。以下の表に、[[二進法]](底が2)、三進法(底が3)、[[六進法]](底が2×3)、[[十進法]](底が2×[[5]])での各表記法の差異を掲載する。 {| class="wikitable" style="float:left;margin:1em;text-align:right" |+数列の進み方(十八まで) ! 二進法 ! 三進法 ! 六進法 ! 十進法 |- |0||0||0||0 |- |1||1||1||1 |- |'''10'''||2||2||2 |- |11||'''10'''||3||3 |- |'''100'''||11||4||4 |- |101||12||5||5 |- |110||20||'''10'''||6 |- |111||21||11||7 |- |'''1000'''||22||12||8 |- |1001||'''100'''||13||9 |- |1010||101||14||'''10''' |- |1011||102||15||11 |- |1100||110||20||12 |- |1101||111||21|||13 |- |1110||112||22||14 |- |1111||120||23||15 |- |'''10000'''||121||24||16 |- |10001||122||25||17 |- |10010||200||30||18 |} {| class="wikitable" style="float:left;margin:1em;text-align:right" |+数列の進み方(十九以降) ! 二進法 ! 三進法 ! 六進法 ! 十進法 |- |10011||201||31||19 |- |10100||202||32||20 |- |10101||210||33||21 |- |10110||211||34||22 |- |10111||212||35||23 |- |11000||220||40||24 |- |11001||221||41||25 |- |11010||222||42||26 |- |11011||'''1000'''||43||27 |- |100100||1100||'''100'''||36 |- |110001||1211||121||49 |- |110110||2000||130||54 |- |'''1000000'''||2101||144||64 |- |1010001||'''10000'''||213||81 |- |1100100||10201||244||'''100''' |} {{clear}} {| class="wikitable" border="1" style="text-align:right" |+三進法の位取り |- style="background:#ccccff" ! 桁 !! 三進法の位数 !! [[二進法|二進数]]に換算 !! 三進数 !! [[六進法|六進数]]に換算 !! [[十進法|十進数]]に換算 |- |- | 整数第七位 || [[729]]の位 || 1011011001 || 1000000 || 3213 || 729 |- | 整数第六位 || [[243]]の位 || 11110011 || 100000 || 1043 || 243 |- | 整数第五位 || [[81]]の位 || 1010001 || 10000 || 213 || 81 |- | 整数第四位 || [[27]]の位 || 11011 || 1000 || 43 || 27 |- | 整数第三位 || [[9]]の位 || 1001 || 100 || 13 || 9 |- | 整数第二位 || [[3]]の位 || 11 || 10 || 3 || 3 |- | 整数第一位 || [[1]]の位 || 1 || 1 || 1 || 1 |- | 小数第一位 || [[1/3]]の位 || 1/11 || 0.1 || 0.2 || 1/3 |- | 小数第二位 || [[1/9]]の位 || 1/1001 || 0.01 || 0.04 || 1/9 |- | 小数第三位 || 1/27の位 || 1/11011 || 0.001 || 0.012 || 1/27 |- | 小数第四位 || 1/81の位 || 1/1010001 || 0.0001 || 0.0024 || 1/81 |} ※ 位数は十進表記。 ===演算=== 三進法で記した、[[加算]]及び[[乗算]]の表は次のようになる。 {| class="wikitable" style="float:left;margin:1em" |+加算 |- style="background:#ccccff;" ! + !! 0 !! 1 !! 2 |- ! style="background:#ccccff;" | 0 | 0 || 1 || 2 |- ! style="background:#ccccff;" | 1 | 1 || 2 || 10 |- ! style="background:#ccccff;" | 2 | 2 || 10 || 11 |} {| class="wikitable" style="float:left;margin:1em" |+乗算 |- style="background:#ccccff;" ! × !! 0 !! 1 !! 2 |- ! style="background:#ccccff;" | 0 | 0 || 0 || 0 |- ! style="background:#ccccff;" | 1 | 0 || 1 || 2 |- ! style="background:#ccccff;" | 2 | 0 || 2 || 11 |} {{clear}} [[3|三]]は[[2|二]]で割り切れない(= [[奇数]]である)ため、三進法では [[1/2]] = 0.<u>1</u>111… となり、「'''1÷[[偶数]]'''」が全て割り切れない。三進法や[[五進法]]などの奇数進法は、1/2 が割り切れないため、そのどこかの桁で丸め([[端数処理]])を行おうとする時に、例えば六進法の 0.3 や[[十進法]]の 0.5 のような「二分すると同数」が起こらない、という特徴を持つ。さらに後述する平衡三進法には、ある桁で打ち切るだけで「一捨二入」の丸めになる、という特長<!--「特徴」とは、あえて使い分けている-->を持つ。 しかし、二の次の数である三が底になっているので、「三分すると同数」が起こる、という特徴を持つ。これは、六進法の 0.2 や[[九進法]]の 0.3 などと同様である。 {|class="wikitable" |+三進法の[[小数]]と[[除算]] ![[単位分数]]!!除数の[[素因数分解]]!!三進小数!![[六進法|六進]]小数!![[十進法|十進]]小数 |- |[[1/2]]||2||0.<u>1</u>111…||0.3||0.5 |- |[[1/3]]||3||0.1||0.2||0.<u>3</u>333… |- |[[1/4]]||2{{sup|2}}||0.<u>02</u>02…||0.13||0.25 |- |[[1/5]]||5||0.<u>0121</u>…||0.<u>1</u>111…||0.2 |- |[[1/6]]||2×3||0.0<u>1</u>11…||0.1||0.1<u>6</u>66… |- |[[1/7]]||7||0.<u>010212</u>…||0.<u>05</u>05…||0.<u>142857</u>… |- |[[1/8]]||2{{sup|3}}||0.<u>01</u>01…||0.043||0.125 |- |[[1/9]]||3{{sup|2}}||0.01||0.04||0.<u>1</u>111… |- |[[1/10]]||2×5||0.<u>0022</u>…||0.0<u>3</u>333…||0.1 |- |1/[[11]]||11||0.<u>00211</u>…||0.<u>0313452421</u>…||0.<u>09</u>09… |- |[[1/12]]||2{{sup|2}}×3||0.0<u>02</u>02…||0.03||0.08<u>3</u>33… |- |1/[[16]]||2{{sup|4}}||0.<u>0012</u>…||0.0213||0.0625 |- |1/[[18]]||2×3{{sup|2}}||0.00<u>1</u>11…||0.02||0.0<u>5</u>555… |- |[[1/20]]||2{{sup|2}}×5||0.<u>0011</u>…||0.01<u>4</u>44…||0.05 |- |1/[[25]]||5{{sup|2}}||0.<u>00100201102212202112</u>…||0.<u>01235</u>…||0.04 |- |1/[[27]]||3{{sup|3}}||0.001||0.012||0.<u>037</u>… |- |1/[[36]]||2{{sup|2}}×3{{sup|2}}||0.00<u>02</u>02…||0.01||0.02<u>7</u>77… |- |1/[[64]]||2{{sup|6}}||0.<u>0001021011122022</u>…||0.003213||0.015625 |- |1/[[81]]||3{{sup|4}}||0.0001||0.0024||0.<u>012345679</u>… |} ※ 単位分数と除数の素因数分解は十進表記。 == 経済性 == [[コンピュータ]]などの計算機械で、N進記数法で一桁を表現・記憶するコストがNに比例すると'''仮定'''する。すると、最大値Mまでを表現・記憶できるようにするためのコストは、一桁分のコストに必要な桁数を掛けたものとなり、具体的には ''N'' × log<sub>''N''</sub>''M'' である。この値が極小になるのは''N''が[[ネイピア数]]''e''の時であるが、[[e進法]]は通常の数の表現には全く適さない。前後の整数では、二進と四進の場合が同じで、三進の場合が若干だが小さな値となる。よって前述の仮定の下では三進法の採用が最も経済的ということになるが、三値素子といったようなものは、特に電子的には二値素子の扱いやすさとは比べるべくもなく、稀である。が、後述する平衡三進法を使っていたソ連のコンピュータ「[[Setun]]」など、全く例がないわけでもない。 以上の計算では、'''仮定として'''N進の場合にはN個の素子が必要としているわけだが、実際には一つの素子で、二つの状態(オン・オフ)や三つの状態(実用例のある三値素子としては、二方向の磁化と無磁化など)のものを使うことが専らのため、'''そもそも仮定が実際とは異なる'''(十進法の計算機などで、十個の素子を使うものもないわけではないが、それではたいへんに効率が悪く、たいていは2状態の素子4個〜6個をうまく利用して十種類の値を表現している)。 == 平衡三進法 == 重みを持つ各桁の値を負の側にも振る、平衡位取り記数法の最も単純な方式である(同様の考え方を拡張すれば、平衡五進法や平衡七進法が考えられる)。''a<sub>m</sub>''の値を-1,0,1とする。位取り記数法の内に[[負数]]も含めて綺麗に表現できるという性質があり、[[ドナルド・クヌース]]のように「おそらく、あらゆる記数法の中で最も美しい」と言う者もいる<ref>『The Art of Computer Programming』日本語版(アスキー)2巻 p. 194</ref><ref>{{Cite book |author=Donald E. Knuth |authorlink=ドナルド・クヌース |title=[[The Art of Computer Programming]] |volume=2 |edition=3 |publisher=Addison Wesley Longman |language= |year=1998 |page=207 |isbn=0-201-89684-2 |quote=Perhaps the prettiest number system of all is the ''balanced ternary notation''}}</ref>。しかし、[[二進法]]などと比べて応用も多くないため、ほとんど使われていない。ここでは-1を<math>\bar{1}</math>と表示することとする。また、この表記法は[[天秤]]で「1g,3g,9g,27gの分銅を用いて1~40gの質量を量る方法」とも似ている。 === 平衡三進法の演算 === 平衡三進法では通常と若干異なる[[二項演算|演算]]が必要である。加算、乗算の結果は次のようになる。 {| class="wikitable" style="float:left;margin:1em" |+加算 |- style="background:#ccccff;" ! + !! <math>\bar{1}</math> !! <math>0</math> !! <math>1</math> |- ! style="background:#ccccff;" | <math>\bar{1}</math> | <math>\bar{1}1</math> || <math>\bar{1}</math> || <math>0</math> |- ! style="background:#ccccff;" | <math>0</math> | <math>\bar{1}</math> || <math>0</math> || <math>1</math> |- ! style="background:#ccccff;" | <math>1</math> | <math>0</math> || <math>1</math> || <math>1\bar{1}</math> |} {| class="wikitable" style="float:left;margin:1em" |+乗算 |- style="background:#ccccff;" ! × !! <math>\bar{1}</math> !! <math>0</math> !! <math>1</math> |- ! style="background:#ccccff;" | <math>\bar{1}</math> | <math>1</math> || <math>0</math> || <math>\bar{1}</math> |- ! style="background:#ccccff;" | <math>0</math> | <math>0</math> || <math>0</math> || <math>0</math> |- ! style="background:#ccccff;" | <math>1</math> | <math>\bar{1}</math> || <math>0</math> || <math>1</math> |} {{clear}} 上の位に影響を及ぼすのは加算の2つだけである。二進と同様に乗算では上の位に影響を及ぼさない。減算は複雑そうに思えるが、加算の結果を知っていれば難しくない。減算では<math>\bar{1}</math>と<math>1</math>を入れ替えたものを加算する方法も有効である。ただし、除算は厄介である。 === 通常のN進法との差異 === {| class="wikitable" style="margin:1em" |- style="background:#ccccff;text-align:center;" ! rowspan="2" | 十進法 ! rowspan="2" | 六進法 ! rowspan="2" | 通常の三進法 ! colspan="2" | 平衡三進法 |- style="background:#ccccff;text-align:center;" ! 正の数 ! 負の数 |- | 0 || 0 || 0 |colspan="2"| <math>0</math> |- | 1 || 1 || 1 || <math>1</math> || <math>\bar{1}</math> |- | 2 || 2 || 2 || <math>1\bar{1}</math> || <math>\bar{1}1</math> |- | 3 || 3 || 10 || <math>10</math> || <math>\bar{1}0</math> |- | 4 || 4 || 11 || <math>11</math> || <math>\bar{1}\bar{1}</math> |- | 5 || 5 || 12 || <math>1\bar{1}\bar{1}</math> || <math>\bar{1}11</math> |- | 6 || 10 || 20 || <math>1\bar{1}0</math> || <math>\bar{1}10</math> |- | 7 || 11 || 21 || <math>1\bar{1}1</math> || <math>\bar{1}1 \bar{1}</math> |- | 8 || 12 || 22 || <math>10\bar{1}</math> || <math>\bar{1}01</math> |- | 9 || 13 || 100 || <math>100</math> || <math>\bar{1}00</math> |} === コンピュータ === 平衡三進法を採用したコンピュータに[[Setun]]がある。 == 3値論理との関連 == [[多値論理]]の一種で、それらのうちもっとも単純なものともいえる[[3値論理]]と三進法は、ある意味で関連があるとも言えるが、同一視するのは誤りである。3値論理には3値論理としての各種の論理演算が提案されているが、それらは必ずしも記数法としての三進法(通常の、あるいは平衡三進法)と対応するとは限らないし、対応させなければならない、というものでもない。論理素子・回路として3状態の方式を使い、数の表現と数値計算に三進法を採用したコンピュータがあったとして、そのコンピュータが論理演算として3値論理の論理演算を持つか否か(あるいはそれがどのような論理体系を実装したものか)も設計次第である(前述のソ連のSetunに関して、三進法の回路方式を、すなわち3値論理であると解釈したものと思われる解説などが見られることがある)。 == 注 == <references/> == 関連項目 == *[[二進法]] *[[六進法]] *[[九進法]] *[[十二進法]] *[[広義の記数法]] == 参考文献 == *[[ヘンリー・S・ウォーレン・ジュニア]]『{{仮リンク|ハッカーのたのしみ|en|Hacker's Delight}}』 ISBN 4434046683 {{デフォルトソート:さんしんほう}} [[Category:数の表現]] [[Category:位取り記数法]] [[Category:数学に関する記事]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Clear
(
ソースを閲覧
)
テンプレート:Redirect
(
ソースを閲覧
)
テンプレート:Sup
(
ソースを閲覧
)
テンプレート:仮リンク
(
ソースを閲覧
)
三進法
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報