web-dev-qa-db-ja.com

なぜ三元計算ではなくバイナリ計算ですか?

3つの状態のオブジェクトは、より多くの情報を保持し、より大きな値を処理する能力をすぐに持っているのではないでしょうか?現在、プロセッサはXORゲートの大規模なネットを使用しているため、作り直す必要があります。

64ビット(2 ^ 63の可能な状態を表すことができる)であるため、同等の 三元 生成を計算すると、30桁のlog(3 ^ 63-2 ^ 63)の数をサポートできます。

+1と0の間の電位差を検出するのは、-1と0の間と同じくらい簡単だと思います。

ハードウェア、電力消費、またはチップ密度のある程度の矛盾は、ストレージおよびコンピューティング能力の増加を相殺するでしょうか?

69
ojblass
  • 3つ以上の状態/レベル/その他を使用するコンポーネントを構築するのははるかに困難です。たとえば、ロジックで使用されるトランジスタは閉じられており、まったく導通しないか、大きく開いています。それらを半分開くと、はるかに高い精度が必要になり、余分な電力が使用されます。それでも、より多くのデータをパックするためにより多くの状態が使用される場合がありますが、まれです(最新のNANDフラッシュメモリ、モデムの変調など)。

  • 3つ以上の状態を使用する場合は、バイナリが他の世界で使用されているため、バイナリと互換性が必要です。バイナリへの変換には高価な乗算または剰余除算が必要になるため、3つが出ています。代わりに、4以上の2の累乗に直接進みます。

これらは実行されない実際的な理由ですが、数学的には三値論理でコンピューターを構築することは完全に可能です。

59
starblue

ここで多くの誤報。バイナリには簡単なオン/オフスイッチがあります。 Trinary/Ternaryは次の2つのモードのいずれかを使用できます。バランスaka -1、0、+ 1、またはアンバランス0、1、2ですが、単にオンまたはオフではなく、より正確には2つの「オン」状態があります。

光ファイバと拡張ハードウェアの拡張により、三元は実際にはるかに低コストではるかに拡張的で高速な状態になります。少なくとも最初は、最新のコーディングを新しい3進コードと組み合わせて(32ビットソフトウェアを64ビットハードウェアで使用できるように)使用できます。どの情報が通過するかを確認するために初期のハードウェアが必要です。または、少々の場合は事前にアナウンスするソフトウェアが必要です。コードは、同じまたはより少ない電力で、最新の2個ではなく、3個ずつ送信できます。

光ファイバハードウェアでは、最新のオン/オフバイナリプロセスではなく、0 = offで決定され、他の2つのスイッチは光の直交偏光として決定されます。セキュリティに関しては、各PCまたはユーザーでさえ、ユーザーと宛先間でのみ送受信される特定の偏光「仕様」に設定されているため、これは実際に個人にとって非常に安全になります。同じことが他のハードウェアの「ゲート」にも当てはまります。大きくする必要はなく、2つではなく3つの可能性のオプションがあります。

時計回り、反時計回り、またはオフのいずれかの循環超伝導電流を使用して、三値メモリセルを可能にするジョセフソン効果に関するいくつかの理論さえ、さらにはおそらくテストを開始しました。

直接比較した場合、Ternaryは基数経済が最も高い整数ベースであり、2進数と4進数がそれに続きます。いくつかの最新のシステムでさえ、NULLフィールドの内容を処理する手段として三値論理を実装するSQLとして知られる三値論理の一種を使用しています。 SQLは、データベース内の欠落データを表すためにNULLを使用します。フィールドに定義済みの値が含まれていない場合、SQLはこれは実際の値は存在するが、その値は現在データベースに記録されていないことを意味します。欠損値は、ゼロの数値または長さゼロのストリング値と同じではないことに注意してください。何かをNULLと比較すると、さらに別のNULLであっても、UNKNOWN真理状態になります。たとえば、SQL式「City = 'Paris'」は、Cityフィールドに「Chicago」が含まれるレコードではFALSEに解決されますが、NULL Cityフィールドが含まれるレコードではUNKNOWNに解決されます。言い換えると、SQLにとって、未定義のフィールドは潜在的にすべての可能な値を表します。欠落している都市はパリを表す場合もあれば、表さない場合もあります。これは、粗雑ではあるが、現代のバイナリシステムで3進論理が使用される場所です。

37
screwballl

もちろん、10進数システムが1桁ではるかに多くのデータを保持できるように、ビットごとにより多くのデータを保持できます。

しかし、それはまた複雑さを増します。バイナリは多くの場合非常にうまく動作し、操作が非常に簡単になります。バイナリ加算器のロジックは、3進数(または10進数)の場合よりもはるかに単純です。

魔法のように多くの情報を保存したり処理したりすることはできません。ハードウェアは非常に大きく、より複雑である必要があるため、より大きな容量を相殺する以上です。

16
jalf

ロシアの3台のコンピューターに関する記事を読む必要があります。

10
paweloque

その多くは、最終的にビットが電気的インパルスとして表されるという事実に関係しており、「充電済み」と「充電なし」を単に区別するハードウェアを構築し、状態間の遷移を簡単に検出することが容易です。 3つの状態を利用するシステムは、「充電済み」、「部分的に充電済み」、「充電なし」を区別するのにもう少し正確でなければなりません。それに加えて、電子機器の「充電」状態は一定ではありません。エネルギーは最終的に「ブリード」し始めるため、「充電」状態は実際のエネルギーの「レベル」によって異なります。トライステートシステムでは、これも考慮する必要があります。

9
mipadi

まあ、一つには、少しよりも小さな情報単位はありません。ビットの操作は、情報を扱う最も基本的かつ基本的な方法です。

おそらくより強力な理由は、3つではなく2つの安定状態を持つ電気コンポーネントを作成する方がはるかに簡単だからです。

余談:あなたの数学は少しずれています。 64桁の3進数には約101.4桁の2進数があります。説明:最大64桁の3進数は3433683820292512484657849089280(3 ^ 64-1)です。これをバイナリで表すには、102ビットが必要です:101011010101101101010010101111100011110111100100110010001001111000110001111001011111101011110100000000

これは簡単に理解できます。log2(3 ^ 64)は約101.4376です

また、光ファイバーは光周波数(すなわち、色)を使用して状態を区別し、それによりほぼ無限(検出ユニットの解像度に応じて)の基本的な可能性を可能にすることを示唆する理論もあります。

論理ゲートはどのベースでも間違いなく有料ですが、例として3進法を使用してみましょう。

3進XORゲートの場合、比較する3つの状態のいずれか(またはいずれか)に排他的である可能性がありますOR他の3つの状態の1つ。もちろん、これはより複雑なハードウェアとソフトウェアを必要としますが、複雑さはサイズを小さくし、さらに重要なことには電力(読み取り熱)を減らす必要があります。 3つの状態を表すために微視的な「隆起、「穴」、または「変化しない」が存在するナノコンピューティングシステムで3進法を使用することの話ですらあります。

現在、私たちはQWERTYタイプの問題です。Qwertyはもはや存在しないタイピングメカニズムの問題のために非効率的に設計されましたが、今日キーボードを使用するすべての人はqwertyの使用を学びましたバイナリコンピューティングの物理的限界に達すると、3次以上のベースがいつかこの問題を突破するでしょう。もう20年間はそうでないかもしれませんが、毎年能力を倍増させ続けることはできません。永遠に半分。

4

「ビット」に相当する3項は、あまりにも多くの怒りを引き起こしました!

3
NoizWaves

スクリューボールの返事は正確であり、ここで提供されているいくつかの虚偽表示を修正しています。分数の正の値について答えた人は、0、+ 1、-1に基づく三元系の概念を完全に逃しました。 1950年代にロシアによって最初に建設されたとき、ソ連と米国の間の競争は激しかった。この2つの間の政治は、ソ連の3項に対する米国の2項の最終的な人気に大きく関係していると思われます。

私が読んだことから、いくつかの三元コンピューターが使用されています。モスクワでは大学で使用されているものがあり、IBMではラボで使用されているものがあります。他の人への言及がありますが、私は彼らがどれほど深刻であるか、または実験や遊びのためだけのものであるかを区別できませんでした。どうやら彼らは構築するためにはるかに安価であり、彼らは動作するためにはるかに少ないエネルギーを使用しています。

3
rbud

もう1つの大きなハードルは、定義する必要があるロジック操作の数がはるかに多いことです。演算子の数は、式b ^(b ^ i)で求められます。ここで、bは基数、iは入力の数です。 2入力バイナリシステムの場合、これは16の可能な演算子になります。これらのすべてが通常ゲートに実装されるわけではなく、複数の条件をカバーするゲートもありますが、3つ以下の標準ゲートですべて実装できます。これらのゲートのいくつかは互いに似ていますが、最終的には基本回路を手動で設計する能力はほとんど不可能です。エンジニアリングの新入生でも頭の中で基本的なバイナリ回路を設計できます。

2
Greg

私はそれが2つの理由があると信じています(間違っている場合は私を修正してください):最初に0と1の値は実際には電流/電流などではないからです。ノイズは非常に高く、電子部品は、たとえば0.0から0.4まで変動する値がゼロであり、0.7から1.2までが変動することを区別できる必要があります。レベルを追加すると、基本的にこの区別が難しくなります。

第二に:すべてのブール論理はすぐに意味をなさなくなります。また、ブールゲートから合計を計算したり、他のすべての数学演算から合計を実装したりできるため、数学の実用にうまくマッピングできるものを用意する方が便利です。 false/maybe/trueの間の任意のペアのブール真理値表はどうなりますか?

1
Stefano Borini

それの多くは、デジタル信号のエラーチェックに関係しています。たとえば、量子コンピューティングでは、このタスクは非クローニングの原則を達成することはほぼ不可能ですが、不可能ではありませんが、状態の数が増加しているという事実もあります。 2つの状態の場合、エラーチェックのプロセスは簡単ではありませんが、比較的簡単です。 3つの状態の場合、エラーチェックは無限に難しくなります。これは、ほぼ無限の状態を持つアナログコンピューターが除外された理由でもあります。

球のパッキングと量子エラーチェックを調べても、量子コンピューティングに興味がある場合は、かなりきれいなものがあります。

1
cwoodall

確かに、3進の「ビット」(テット?)はより複雑になります。同じ量の情報を、base2ではなくbase3に、2状態のコンポーネントが単純な場合のパワーを格納することになります。なぜ先に進んで10州のベースを作らないのですか10

バイナリコンピューティングは、バイナリAND、ORおよびNOTゲート、それらの非常にシンプルで任意の複雑な構造に結合できる機能に関連しています。これらは、文字通りコンピュータが行うすべての処理の基礎です。

3進数または10進数に切り替える重大なケースがある場合は、そうします。それは「彼らはそのようにそれを試みた、それはちょうど立ち往生」の場合ではありません

0
Tim

3つの状態を使用する場合、これにより生じる主な問題は次のとおりです。

  1. ユニポーラ信号を使用すると、ノイズマージンが減少し、ビットエラーレートが増加します。
  2. ユニポーラ信号でノイズマージンを一定に保つには、電源を増やす必要があるため、消費電力が増加します。
  3. バイポーラ信号を使用すると、信号の総振幅が増加し、損失が増加します。
  4. 多層の余分な層PCB=は、バイポーラ信号の負の振幅を考慮して追加する必要があります。

私が納得することを願っています

0
user7526

回路をバイナリ以外で動作させるには、他の状態の表現方法を定義する必要があります。 -1、0、+ 1のシステムを提案しましたが、トランジスタはそのようには機能せず、電圧または電流を一方向にのみ流すのが好きです。トライステートビットを作成するには2つのトランジスタが必要ですが、同じトランジスタから2つのバイナリビットを作成し、3ではなく4つの状態にすることができます。バイナリは低レベルでより実用的です。

回線にしきい値を設定しようとして、代わりに0、+ 1、+ 2を使用すると、別の問題が発生します。詳細を説明するのに十分な知識はありませんが、論理回路の場合は、特に業界が既にバイナリに完全に専念している場合、それが価値がある以上に面倒です。

ビットごとに3つ以上の状態を取得するために複数のレベルが使用される領域が1つあります。 [〜#〜] mlc [〜#〜] フラッシュメモリ。そこでもレベルの数は2のべき乗であるため、出力はシステムの残りで使用するためにバイナリに簡単に変換できます。

0
Mark Ransom

三項のほうが効率的だと思います。それはただ人気になりませんでした。バイナリがステージに登場し、今では、3進数への切り替えは、私たちが知っているすべての変更になります。

0
trav-O