2

我一直在阅读一篇关于密码学的文章,我心想“32 位计算机实际上如何对 512 位值甚至 64 位值执行操作?”

有人能指出我正确的方向吗?也许我不知道如何正确表达我想知道的内容,但谷歌搜索对弄清楚这一点并没有太大帮助。

谢谢!

4

5 回答 5

5

这是GregS 评论的扩展。

假设我知道所有 100 个single-digit * single-digit乘法(从0 * 0 = 09 * 9 = 81),并且有人要求我计算561 * 845。我可以说,“对不起,我不能乘以这么大的数字”;或者,我可以记住我的童年教育并这样做:

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

这只要求我可以在任何给定步骤中做我已知范围内的乘法或加法(带进位)。

现在,假设上面的每个符号不是十进制数字,而是一个 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

这些操作在软件中执行或使用专用硬件(用于加密)。例如库,请参阅GMPMPFR

于 2012-10-03T23:59:51.517 回答
0

简而言之,就像米奇所说的那样,它只是一点一点地分解它。您的处理器可能需要一些时间来处理它,但这就是为什么我们现在拥有多核处理器来加速这个过程。这也是为什么大多数操作系统都有 32 位和 64 位版本以及最终 128 位的原因。如果您对此感兴趣,请参加一些关于汇编和机器语言的课程

于 2012-10-04T00:02:17.800 回答