歴史:クヌースのアルゴリズムの本の 1 つから、最初のコンピューターが 10 の基数を使用したことを読みました。その後、ここで2 の補数に切り替わりました。
質問:少なくともモノイドで基数が -2 にならないのはなぜですか?
例:
(-2)^1 = -2
(-2)^3 = -8
問題は、負数進(base -2)システムでは、理解がより難しく、可能な正の値と負の値の数が異なることです。この後者の点を理解するために、単純な3ビットの場合を考えてみましょう。
ここで、最初の(右端の)ビットは10進数の1を表します。真ん中のビットは10進数の-2を表します。3番目(左端)のビットは10進数の4を表します
それで
000-> 0
001-> 1
010-> -2
011-> -1
100-> 4
101-> 5
110-> 2
111-> 3
したがって、表現可能な値の範囲は-2から5、つまり非対称です。
基本的に、デジタル ロジックは基数 2 です。デジタル信号は、オンまたはオフのいずれかです。(BCD のように) 他のベースをサポートすることは、無駄な表現スペース、より多くのエンジニアリング、より複雑な仕様などを意味します。
追加するために編集:デジタル ロジックでの単一の 2 進数の自明な表現に加えて、ハードウェアで簡単に加算を実現できます。
(No carry) (with carry)
| 0 1 0 1
--+--------------------
0 | 00 01 01 10
1 | 01 10 10 11
(返される数字は(A xor B) xor C
で、キャリーは です((A and B) or (C and (A or B)))
) これらは連鎖して、完全なレジスタ加算器を生成します。
これにより、2 の補数が得られます。否定は簡単で、正と負の混合数の加算は、追加のハードウェアなしで自然に行われます。したがって、減算はほとんど無料です。
算術演算をこれほど安価に実装できる表現は他にほとんどなく、私はこれほど簡単なものを知りません。
ストレージの最適化と処理時間の最適化は、多くの場合、互いに目的が交差しています。他のすべての条件が同じであれば、通常は単純さが複雑さに勝ります。
情報を格納するためのメカニズムは誰でも提案できますが、それをサポートするプロセッサまたはアルゴリズムがなければ、それは使用されません。
基数 -2 ではなく基数 2 を選択する理由は 2 つあります。
まず、多くのアプリケーションでは、負の数を表す必要はありません。それらの表現を単一ビットに分離することにより、表現可能な数値の範囲を拡大するか、負の数値が不要な場合に必要な記憶域を減らすことができます。ベース -2 では、範囲をクリップしても負の値を含める必要があります。
次に、2 の補数ハードウェアは実装が簡単です。は実装が簡単なだけでなく、符号付きと符号なしの両方の算術演算をサポートする 2 の補数ハードウェアを実装するのも非常に簡単です。これらは同じものだからです。つまり、uint4(8) と sint4(-15) のバイナリ表現は同じであり、uint(7) と sint4(7) のバイナリ表現も同じです。署名されているかどうかに関係なく、値はすべてどちらの方法でも機能します。つまり、HW は記号について何も知らずに済み、言語規則として処理できるということです。
また、バイナリ システムの使用には数学的背景があります。クロード・シャノンの情報理論を考えてみてください。私の英語力はこのトピックを説明する資格がないので、ウィキペディアへのリンクをたどって、これらすべての背後にある数学を楽しんでください.
1 の補数には 0 と -0 があります。
CDCは、あなたが示唆するように、否定を非常に簡単にする1の補数マシンを作成していました。私が理解しているように、2 の補数バイナリ減算器に関する IBM の特許を侵害しない減算用のハードウェアを製造することもできました。
最終的には、電圧変動のために決定が下されました。
ベース 2 では、オンまたはオフであり、その間はありません。
しかし、基数 10 では、各数値が何であるかをどのように知ることができますか?
0.1 ボルトは 1 ですか? .11はどうですか?電圧は変動する可能性があり、正確ではありません。これが、アナログ信号がデジタルほど良くない理由です。これは、HDMI ケーブルに 6 ドル以上を支払う場合、それは無駄であり、そこに到達するかどうかにかかわらず、デジタルです。信号は変化する可能性があるため、オーディオは重要です。
例なしで dmckee が指摘した複雑さの例を参照してください。0 から 9 の数字の例を見ることができます。
0 = 0
1 = 1
2 = 110
3 = 111
4 = 100
5 = 101
6 = 11010
7 = 11011
8 = 11000
9 = 11001