0

歴史:クヌースのアルゴリズムの本の 1 つから、最初のコンピューターが 10 の基数を使用したことを読みました。その後、ここで2 の補数に切り替わりました。

質問:少なくともモノイドで基数が -2 にならないのはなぜですか?

例:

(-2)^1 = -2 
(-2)^3 = -8
4

8 に答える 8

19

問題は、負数進(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、つまり非対称です。

于 2009-07-08T17:04:44.400 に答える
16

基本的に、デジタル ロジック基数 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 の補数が得られます。否定は簡単で、正と負の混合数の加算は、追加のハードウェアなしで自然に行われます。したがって、減算はほとんど無料です。

算術演算をこれほど安価に実装できる表現は他にほとんどなく、私はこれほど簡単なものを知りません。

于 2009-07-08T16:56:06.100 に答える
3

ストレージの最適化と処理時間の最適化は、多くの場合、互いに目的が交差しています。他のすべての条件が同じであれば、通常は単純さが複雑さに勝ります。

情報を格納するためのメカニズムは誰でも提案できますが、それをサポートするプロセッサまたはアルゴリズムがなければ、それは使用されません。

于 2009-07-08T16:59:50.930 に答える
3

基数 -2 ではなく基数 2 を選択する理由は 2 つあります。

まず、多くのアプリケーションでは、負の数を表す必要はありません。それらの表現を単一ビットに分離することにより、表現可能な数値の範囲を拡大するか、負の数値が不要な場合に必要な記憶域を減らすことができます。ベース -2 では、範囲をクリップしても負の値を含める必要があります。

次に、2 の補数ハードウェアは実装が簡単です。は実装が簡単なだけでなく、符号付きと符号なしの両方の算術演算をサポートする 2 の補数ハードウェアを実装するのも非常に簡単です。これらは同じものだからです。つまり、uint4(8) と sint4(-15) のバイナリ表現は同じであり、uint(7) と sint4(7) のバイナリ表現も同じです。署名されているかどうかに関係なく、値はすべてどちらの方法でも機能します。つまり、HW は記号について何も知らずに済み、言語規則として処理できるということです。

于 2009-07-08T18:14:55.177 に答える
2

また、バイナリ システムの使用には数学的背景があります。クロード・シャノンの情報理論を考えてみてください。私の英語力はこのトピックを説明する資格がないので、ウィキペディアへのリンクをたどって、これらすべての背後にある数学を楽しんでください.

于 2009-07-08T17:41:19.490 に答える
0

1 の補数には 0 と -0 があります。

CDCは、あなたが示唆するように、否定を非常に簡単にする1の補数マシンを作成していました。私が理解しているように、2 の補数バイナリ減算器に関する IBM の特許を侵害しない減算用のハードウェアを製造することもできました。

于 2009-07-08T16:56:00.983 に答える
0

最終的には、電圧変動のために決定が下されました。

ベース 2 では、オンまたはオフであり、その間はありません。

しかし、基数 10 では、各数値が何であるかをどのように知ることができますか?

0.1 ボルトは 1 ですか? .11はどうですか?電圧は変動する可能性があり、正確ではありません。これが、アナログ信号がデジタルほど良くない理由です。これは、HDMI ケーブルに 6 ドル以上を支払う場合、それは無駄であり、そこに到達するかどうかにかかわらず、デジタルです。信号は変化する可能性があるため、オーディオは重要です。

于 2009-07-08T17:02:02.487 に答える
0

例なしで dmckee が指摘した複雑さの例を参照してください。0 から 9 の数字の例を見ることができます。

0 = 0
1 = 1
2 = 110
3 = 111
4 = 100
5 = 101
6 = 11010
7 = 11011
8 = 11000
9 = 11001
于 2009-07-08T17:12:19.657 に答える