コンピューターは人間のように言葉や数字を理解できません。最新のソフトウェアではエンド ユーザーがこれを無視できますが、コンピュータの最低レベルでは、すべてがオンまたはオフの 2 つの状態のいずれかで記録されるバイナリ電気信号によって表されます。複雑なデータを理解するには、コンピューターはデータをバイナリでエンコードする必要があります。
バイナリは 2 を基数とする数値体系です。基数 2 は、コンピュータが理解できるオンとオフの状態に対応する 2 つの数字 (1 と 0) のみがあることを意味します。おそらく、基数 10、つまり 10 進法についてはよくご存じでしょう。 10 進数では、0 から 9 までの 10 桁を使用し、折り返して 2 桁の数値を形成します。各桁の価値は最後の桁の 10 倍になります (1、10、100 など)。バイナリも同様で、各桁の価値は最後の桁の 2 倍になります。
バイナリで数える
2 進数では、最初の桁は 10 進数の 1 に相当します。 2 桁目は 2、3 桁目は 4、4 桁目は 8 というように、毎回 2 倍になります。これらをすべて合計すると、10進数の数値が得られます。それで、
1111 (2 進数) = 8 + 4 + 2 + 1 = 15 (10 進数)
0 を考慮すると、4 つのバイナリ ビットに対して 16 個の可能な値が得られます。 8 ビットに移行すると、取り得る値は 256 になります。 10 進数の 4 桁で 10,000 の値が得られるため、これを表現するにはさらに多くのスペースが必要になります。見た目を不格好にするためだけに数え方システムを再発明するという大変な苦労をしているように見えるかもしれませんが、コンピューターは 10 進数よりも 2 進数の方がはるかによく理解できます。確かに、バイナリはより多くのスペースを必要としますが、ハードウェアによって制限されています。また、論理処理などの一部の処理では、10 進数よりも 2 進数の方が優れています。
プログラミングで使用されるもう 1 つの基本システム、16 進数もあります。コンピューターは 16 進数で動作しませんが、プログラマーはコードを記述するときに人間が判読できる形式でバイナリ アドレスを表すために 16 進数を使用します。これは、16 進数の 2 桁でバイト全体、2 進数では 8 桁を表すことができるためです。 16 進数では、10 進数と同様に 0 ~ 9 を使用し、追加の 6 桁を表す文字 A ~ F も使用します。
では、なぜコンピュータはバイナリを使用するのでしょうか?
簡単に言うと、ハードウェアと物理法則です。コンピューター内のすべての数値は電気信号ですが、コンピューティングの初期の頃、電気信号を正確に測定し制御することははるかに困難でした。負の電荷によって表される「オン」状態と、正の電荷によって表される「オフ」状態のみを区別する方が合理的です。なぜ「オフ」が正の電荷で表されるのかわからない人のために説明すると、電子が負の電荷を持っているためです。電子が増えると、負の電荷を伴う電流が増加することを意味します。
そのため、初期の部屋サイズのコンピューターはシステムの構築にバイナリを使用しており、はるかに古い、より大型のハードウェアを使用していましたが、私たちは同じ基本原則を維持してきました。現代のコンピューターは、バイナリで計算を実行するためにトランジスタとして知られるものを使用します。以下は、電界効果トランジスタ (FET) がどのようなものかを示す図です。
基本的に、ゲートに電流が流れている場合にのみ、ソースからドレインに電流が流れるようにします。これによりバイナリ スイッチが形成されます。メーカーは、これらのトランジスタを信じられないほど小さく、5 ナノメートル、つまり DNA 鎖 2 本ほどのサイズまで製造することができます。これが現代の CPU の動作方法であり、CPU ですらオン状態とオフ状態を区別する際に問題が発生することがあります (ただし、これは主に分子サイズが非現実的であり、 量子力学の奇妙な影響 を受けるためです)。
しかし、なぜ基数 2 だけなのでしょうか?
したがって、「なぜ 0 と 1 だけなのでしょうか? もう 1 桁追加することはできないのですか?」と考えているかもしれません。コンピューターの作り方の伝統に由来する部分もありますが、もう 1 桁追加するということは、電流のさまざまなレベルを区別する必要があることを意味します。単に「オフ」と「オン」だけでなく、「オン」のような状態も区別する必要があるということです。少しだけ」と「たくさん」。
ここでの問題は、複数の電圧レベルを使用したい場合、それらの電圧レベルでの計算を簡単に実行する方法が必要になるが、そのためのハードウェアがバイナリ コンピューティングの代替として実行可能ではないことです。それは確かに存在します。これは 3 値コンピュータ と呼ばれるもので、1950 年代から存在していますが、開発はほぼそこで終了しました。 3 値ロジックは 2 値よりもはるかに効率的ですが、現時点ではバイナリ トランジスタに代わる有効な代替手段を持っている人はいません。少なくとも、バイナリと同じ小さなスケールでトランジスタを開発する取り組みは行われていません。
三値論理を使用できない理由は、コンピューター内でのトランジスタの積層方法 (「ゲート」と呼ばれるもの ) と、それらを数学の実行に使用する方法にあります。ゲートは 2 つの入力を受け取り、それらに対して演算を実行し、1 つの出力を返します。
これにより、長い答えが得られます。コンピュータにとって、二進数計算は他の何よりもはるかに簡単です。ブール論理は、True と False がオンとオフで表されるバイナリ システムに簡単にマッピングされます。コンピュータのゲートはブール論理で動作します。ゲートは 2 つの入力を受け取り、それらに対して AND、OR、XOR などの演算を実行します。 2 つの入力は管理が簡単です。考えられる各入力に対する答えをグラフ化すると、いわゆる真理値表が得られます。
ブール論理で動作するバイナリ真理値表には、基本的な演算ごとに 4 つの可能な出力があります。ただし、3 値ゲートは 3 つの入力を取るため、3 値真理値表には 9 以上が含まれます。 2 項システムには 16 個の可能な演算子 (2^2^2) がありますが、3 項システムには 19,683 (3^3^3) の演算子があります。 3 値の方が効率的である一方で、指数関数的に複雑になるため、スケーリングが問題になります。
知るか?将来的には、バイナリの限界を分子レベルまで押し下げ、ターナリ コンピュータが現実のものとなり始める可能性があります。しかし今のところ、世界はバイナリで動作し続けるでしょう。
画像クレジット: spainter_vfx /Shutterstock、 ウィキペディア 、 ウィキペディア 、 ウィキペディア 、 ウィキペディア





