2

私は暗号化に関する記事を読んでいて、「32 ビットのコンピューターは実際に 512 ビットの値、さらには 64 ビットの値に対してどのように操作を実行するのだろうか?」と考えました。

誰かが私を正しい方向に向けることができますか? 知りたいことを適切に表現する方法に困っているのかもしれませんが、Google 検索はこれを理解するのにあまり役に立ちませんでした。

ありがとう!

4

5 に答える 5

5

これはGregS のコメントの拡張です。

100 のsingle-digit * single-digit掛け算 ( から0 * 0 = 0まで9 * 9 = 81) をすべて知っているとします561 * 845。「申し訳ありませんが、それほど大きな数を掛けることはできません」と言えます。または、子供の頃の教育を思い出して、これを行うこともできます。

       561
       845 *
----------
      2805
     2244
    4488   +
==========
    474045  

これは、任意のステップで、既知の範囲内で乗算、または加算 (キャリー付き) を実行できることのみを必要とします。

ここで、10 進数の代わりに、上記の各記号が32 ビットの単語であるとします。そして、私の代わりに、32 ビットのワードを 64 ビットの結果に乗算し、32 ビットのワードを (キャリー付きで) 加算できるプロセッサがありました。ほら、任意に大きなバイナリ乗算を行うためのシステムがあります。

于 2012-10-04T07:59:03.887 に答える
3

一度に 32 ビット。キャリー、オーバーフローなどを示すフラグがあり、繰り返し操作によるマルチワード演算を可能にします。

于 2012-10-04T00:00:22.293 に答える
2

32 ビット プロセッサは、単一の 32 ビット レジスタで演算を実行するよりも低速ですが、より大きな数を複数のレジスタに分割できます。加算/減算の場合、最下位レジスタから開始して算術演算を実行し、ステータス ビットを次の上位レジスタに転送します。乗算/除算ではもう少し複雑になる可能性がありますが、主な欠点はパフォーマンスです。

詳細については、 http://en.wikipedia.org/wiki/Arbitrary-precision_arithmeticを参照してください。

また、この質問:プログラミング言語は巨大な数の算術演算をどのように処理しますか

于 2012-10-04T00:03:28.923 に答える
0

操作はソフトウェアで実行されるか、特殊なハードウェア (暗号化用) を使用します。ライブラリの例については、GMPおよびMPFRを参照してください。

于 2012-10-03T23:59:51.517 に答える
0

一言で言えば、ミッチが言ったことのようなもので、少しずつ分解していきます。プロセッサが処理するのに時間がかかる場合がありますが、このプロセスを高速化するためにマルチコア プロセッサを使用するようになったのはそのためです。また、ほとんどの OS が 32 ビット版と 64 ビット版、そして最終的には 128 ビット版で提供される理由でもあります。これに興味がある場合は、アセンブリ言語と機械語のクラスを受講してください。

于 2012-10-04T00:02:17.800 に答える