computer-science - X 位计算机如何处理 2X 位数字?

标签 computer-science

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

以 super 任天堂为例。这是一个 16 位系统。使用 16 位,您最多可以数到 65536 或 2^16。那么机器如何处理我的分数,例如高于 65536 的分数?

最佳答案

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

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

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

关于computer-science - X 位计算机如何处理 2X 位数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16755295/

相关文章:

arrays - 为什么最大和子数组是暴力 O(n^2)?

c++ - 计算机如何计算 float 0.1?

java - 制作组件用不同语言编程的(桌面)软件?

c++ - C 中的逻辑运算符和位操作

programming-languages - 我想回到 CS 的基础。对教程或注重应用的引用资料有什么建议吗?

recursion - 递归函数是高阶函数的特例吗

c# - 实现此复合 GetHashCode() 的最佳方法是什么

assembly - 通用机器代码语言?

haskell - 重写树

machine-learning - 用于预测的人工神经网络