【问题标题】:How does an X-bit computer work with 2X-bit numbers?X 位计算机如何处理 2X 位数字?
【发布时间】:2013-05-26 01:02:23
【问题描述】:

这不是我第一次想到这个问题,但我今天正在玩一个旧的 SNES 游戏,当我再次想到它时,想从比我更了解它的人那里寻求答案。

以超级任天堂为例。这是一个 16 位系统。使用 16 位,您最多可以数 65536,即 2^16。那么机器如何应对我的分数大于 65536 的情况呢?

【问题讨论】:

标签: computer-science


【解决方案1】:

实际上它有点复杂,但简单的解释是 16 位处理器可以在一次操作中对 16 位数字进行操作,而要处理更大的数字,您需要将其分解。例如,要添加两个 32 位数字,您将在一次操作中添加最低有效字,然后添加最高有效字,然后添加任何进位位。

显然这要慢得多(3 条指令而不是 1 条指令),但如果需要,几乎可以完成任何操作。这就是具有较大字的处理器可以更快的原因。他们可以用一条指令而不是几条指令来完成更大的操作。从程序员的角度来看,编译器通常会处理这个问题,除非您正在编写汇编,否则您永远不会手动完成。

但实际上,许多处理器都有专门的硬件来执行数学运算,因此调用 32 位或 64 位处理器确实与内存寻址和寄存器大小有关。

【讨论】:

  • 几乎总是两条指令,而不是三条指令。大多数处理器系列都有用于添加两个数字和进位位的特殊指令,事实证明添加进位位的硬件成本是最小的。这是有道理的,如果你想象数字已经通过传播进位位分解成更小的块——谁会注意到一个额外的进位位进入 LSB,而 LSB 通常没有。
  • @DietrichEpp 在 MIPS 中没有标志,您必须使用 3 条指令才能做到这一点。这是高性能计算机架构中一个非常奇怪的例外
【解决方案2】:

位较少的处理器的真正限制是它不能寻址尽可能多的内存,32 位只能寻址 4gb。在数学运算方面,16 位和 32 位处理器都相当于 FTTM(有限带图灵机),因此具有相似的计算能力。例如 java 的 BigInteger 可以任意大

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-14
    • 2015-09-14
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 2017-08-06
    相关资源
    最近更新 更多