コンピューターが2進数システム(0,1)を使用する理由


31

コンピューターが2進数システム(0,1)を使用する理由 代わりに3進数システム(0,1,2)または他の番号システムを使用しないのはなぜですか?


9
これは電気工学に関する質問です。どうやらバイナリゲートを実装する方が簡単です。IIRCは、ある時点で3進ベースのコンピューターを構築していました。
ユヴァルフィルマス14年

7
どんな研究をしましたか?質問のタイトルをGoogleに入力すると、質問に対するいくつかの回答を提供する検索結果が返されます。また、2進数2進コードに関するウィキペディアの記事には、簡単な説明があります。ここで質問する前にかなりの量の研究を行うことを期待しています。質問する前に基礎研究さえ行っていないようです。GoogleとWikipediaの検索は最低限必要です。
DW

より大きなベースは全体として有用であるとは判明しませんでした。
ラファエル

@ラファエル:ターナリーがやった
Mooing Duck 14

2
すでに受け入れられている答えがあるので、これをコメントとして入れます。製造公差により、10個の値を確実に区別する電子デバイスを構築することは非常に困難です。2つの値を区別する電子デバイスを構築するのは比較的簡単です。したがって、簡単な答えは、コンピューターは信頼性のためにバイナリ表現を使用するということです。気にする人のために、より詳細な答えを書いた:bbrown.kennesaw.edu/papers/why_binary.html
ボブブラウン

回答:


31

私たちはコンピューターサイエンスに携わっているので、このように答えます。彼らは答えません。

「コンピューター」とはどういう意味ですか?多くの定義がありますが、科学としてのコンピューターサイエンスでは、最も一般的なのはチューリングマシンです。

チューリングマシンは、いくつかの側面で定義されます。状態セット、遷移テーブル、停止セット、および議論にとって重要なアルファベットです。このアルファベットは、マシンが入力として読み取ることができ、テープに書き込むことができる記号を指します。(異なる入力文字とテープのアルファベットを使用できますが、今のところは心配しないでください。)

したがって、入力アルファベット、または、または、またはチューリングマシンを作成できます。関係ありません。実際、データをエンコードするために選択した任意のアルファベットを使用できます。{0,1}{a,b}{0,1,2}{,}

つまり、は9 と言うことができます。または、は9と言うことができます。これらは単に区別できるシンボルであるため、問題ではありません。0001001↑↑↑↓↑↑↓

秘Theは、バイナリで十分だということです。ビットのシーケンスは数字として解釈できるため、バイナリから他のシステムに変換したり、逆に変換したりできます。

しかし、単項でも十分であることがわかります。9を111111111としてエンコードできます。これは特に効率的ではありませんが、計算能力は同じです。

Lambda計算など、計算の代替モデルを調べると、事態はさらにひどくなります。ここでは、数値を関数として表示できます。実際、すべてを関数として見ることができます。物はビット、0、1ではなく、可変状態のない閉じた数学関数としてエンコードされます。この方法で数字をどのようにできるかについては、教会の数字をご覧ください。

ポイントは、0と1は完全にハードウェア固有の問題であり、選択は任意であるということです。使用しているエンコードは、オペレーティングシステムやネットワークなどのいくつかのサブフィールドを除き、コンピューターサイエンスには特に関係ありません。


2カウンターマシンでの入力エンコーディングについてはどうですか。それは問題のようです。徹底的にエンコードの問題を却下してもいいですか?そして、私は複雑さが問題ではないことにほとんど同意しません。しかし、ラムダ計算はそれに対処する適切な方法ですか?
babou

単項演算子を使用する場合、複雑さの問題があることを認めます。しかし、バイナリvsターナリまたはそのようなものの選択は、いくぶん任意です。エンコーディングの選択は重要ではないようですが、特定のエンコーディングを使用する理由を規定する法律はありません。これは、主に利便性またはハードウェア要件のいずれかによって決まりますが、これは計算科学の範囲外です。
jmite

1
「だから、入力アルファベットでチューリングマシンを作ることができます」。ここでは、「入力アルファベット」ではなく「テープアルファベット」と書く必要があります。興味深い部分は、入力ではなく計算に使用されるものです。さらに、私は単項で十分であることに反対します。単項テープアルファベットを使用したTMは、テープが一定であるため、ほとんど役に立ちません。
サイモンS 14年

最後の文に関して:コンピューターハードウェアとアーキテクチャーの設計と研究もコンピューターサイエンスの一部です。
カベ14

2
単項から2進にすると、数値のサイズが対数に削減されるという点を追加することができます。
reinierpost

23

考慮すべきその他の事項:

2進数システムを使用する理由の一部は、線形空間ではなく対数空間で数値を表現できる最も低いベースの数値システムであることです。一意に区別単項で異なる数、表現の平均長さは、少なくともに比例しなければならないの長さの唯一の文字列があるので、、。2進数の異なる数を一意に区別するには、長さ 2進数があるため、表現の平均長は少なくともに比例する必要があります。nnkk<n1+1+...+1=nnlog2n2kkNログ10Nログ1020.3Nnと1+2+...+n+12=n。より大きなベースを選択すると、一定の要因によってスペース要件が改善されます。base 10は、平均表現長で数値を取得します。これは、すべてのベース2表現の平均長の倍です。バイナリと単項の違いははるかに大きいです。実際、それは関数です。単項式ではなくバイナリーを選択することで多くのことが得られます。それに比べて、より高いベースを選択すると、はるかに少なくなります。nlog10nlog1020.3nn

2つの状態を区別するだけでよい場合、デジタルロジックを実装する方が簡単であるという考えには、いくつかの真実があります。電気信号はアナログであるため、必要なだけ多くの離散状態を表すように解釈できますが、同じ範囲でより多くの状態を確実に区別するには、より正確な(したがって高価で扱いにくい)ハードウェアが必要です。これは、できるだけ低いベースを選択することをお勧めします。

別の潜在的に重要な考慮事項は、論理が2つの異なる値とを含むと古典的に理解されていることです。今、私たちはこれよりも手の込んだ論理を持っていますが、多くの数学と科学はまだかなり基本的な概念に基づいています。コンピューターが計算に使用され、そのロジックが計算に重要であることを考慮すると、少なくとも2つの異なる状態を適切にサポートすることをお勧めしますが、ロジックはそれ以上を必要としません。f a l s etruefalse


9

ほとんどのコンピューター回路が2つの状態を使用する大きな理由の1つは、n個の異なる電圧レベルを区別するために必要な回路の量がn -1にほぼ比例することです。その結果、3つの識別可能な状態を持つには、信号ごとに2倍の回路が必要であり、4つにするには3倍の時間が必要です。情報量を2倍にするだけで回路量を3倍にすると、効率が低下します。

コンピューターには、要素ごとに3つ以上の状態を使用して情報が保存または通信される場所があることに注意してください。フラッシュメモリアレイでは、数百または数千のメモリセルが1組のレベル検出回路によって処理される場合があります。一定量の情報を保存するときに2つではなく4つのレベルをセルごとに使用すると、レベル検出回路のサイズが3倍以上になる場合がありますが、必要なメモリセルの数は半分になります。100-base-T以上の高速イーサネットで通信する場合、ケーブルの複数の信号レベルを検出するために必要な回路のコストは、より多くのワイヤでケーブルを使用するか、より多く処理できるケーブルを使用する必要があるため、コストが大幅に低下する可能性があります許容できないレベルの歪みなしでの1秒あたりの信号遷移。


9

0と1の両方を同時に持つことができる情報の基本単位としてqビットを使用する研究室には、量子コンピューターが存在します。
http://en.wikipedia.org/wiki/Quantum_computer

このリファレンスhttp://en.wikipedia.org/wiki/Ternary_computerに従って構築された三元量子コンピューターもあります

そのため、2進数システムに依存しない代替コンピューティングデバイスを構築することは確かに可能です。たとえば、光ファイバーシステムでは、暗い場合は0を使用し、光の2つの異なる直交偏光を1および-1として使用します。

これらのことに言及する理由は、計算には2進数で十分ですが、計算に使用できる代替の数値システムがあることを示したいからです。

この意味で、2進数システムは優れています。数値の基数表現を使用してすべての整数をエンコードできます。http:// en.wikipedia.org/wiki/Radixこれらの値は、ASCIIコードA = 0x41 = 01000001を表すことも、値が機械命令nop = 0x90 = 0x10010000を表すこともあります。 xZ


3
しかし、彼らはまだバイナリシステムを使用しています。量子計算では、重ね合わせの状態は3番目の可能な値ではありません。また、量子コンピューティングの例を捨てることは、尋ねられた質問に役立ちません。
lPlant 14年

私はこの..知りませんでした
Ali786

「同時に0と1の両方になる情報の基本単位としてのqビット」これはナンセンスです。量子ビットは、非離散(複雑)値を表すという点で、通常のビットとは根本的に異なります。それらは、すべての実用的な目的において比類のないものです。
離散トカゲ

3

デジタルコンピューターの処理能力の中心にあるのは、スイッチのような働きをするトランジスタです。スイッチの「ゲート」で電流を上げることにより、「コレクタ」と「エミッタ」の間で電流が流れることができます-スイッチがオンになります。トランジスタは、完全にオンまたは完全にオフ(「飽和」)の2つのモードのいずれかで動作するように設計され、それらの状態が明確に分割されます。トランジスタは2つの状態をすばやく切り替えることができ、エラーが非常に少ない状態のままになります。

この回路は、AND、NAND、OR、XORなどの論理デバイスの基礎を形成します。NAND関数は、最も基本的なビルディングブロックです。これらのロジックデバイスは、予測可能な状態を維持するプロセッサを提供するために組み立てられ、多くのトランジスタを小さなスペースに詰めて必要な機能を提供できます。

トランジスタは複数の、またはさまざまな状態を管理できますが、その方法で動作する場合、従来の「デジタル」コンピューターを生産しません-予測可能な状態に留まる傾向がなく、干渉、飽和、振動などが発生しやすい-それらは、計算能力の面で限られたアプリケーションを持っています。オペアンプはアナログコンピューターと見なすことができます。


-3

現在、3つ以上の状態を確実に保持できる「スイッチ」を作成する技術がないため、binary(1,0)のみを使用します。(現時点では、量子コンピューターは正確には販売されていません。)バイナリシステムが選択されたのは、特にそのような接続を数兆個扱う場合に、電流の存在と電流の不在を区別するのが非常に簡単だからです。また、システムは絶えず変換する必要があるため、このシステムで他の数値ベースを使用するのはばかげています。これですべてです。


2
これは本当ですが、すべてが既存の回答に既に含まれているのではありませんか?
デビッドリチャービー14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.