什么是最大值。32位机器的RAM容量?为什么不是 16GB?

Kit*_* Ho 7 ramdisk 32-bit

这个问题的灵感来自这里的stackoverflow 中的一个问题

据我所知,

对于 32 位机器,我们可以有 2^32 组指令组合。

因此,对于 32 位机器中 RAM 的最大容量,它应该能够容纳 2^32 条指令集,即

2^32 = 4294967296 条指令集

因此 32 位 = 4 字节,RAM 容量应为 4294967296 * 4 字节 = 17179869186 字节

与 --> 相同

17179869186/1024 = 16777216 KB

16777216/1024 = 16384 MB

16384/1024 = 16GB

所以我猜 32 位机器可以容纳的最大 RAM 容量是 16GB。

但听起来 4GB 是正确的答案。我怎么了???

Shi*_*rai 19

RAM 按字节寻址。在这种情况下可能有 2^32 个地址,因此最多可以寻址 4294967296 字节 (2^32)。这意味着可寻址内存的有效最大值为 4294967296 字节,即 4 GB。

  • @Kit 每个内存地址 * 不是 * 4 个字节 - 每个都是 ***1*** 字节。一个 4 字节长的变量(例如)将跨越 4 个内存位置。所以你乘以 4 是无关紧要的。 (9认同)
  • 只是为了扩展这个解释,没有自然法则规定地址指向的任何大小必须是一个字节(8 位)。如果您有一个内存架构,其中每个内存单元都是 8 个字节(64 位),那么您可以使用 32 位地址寻址 2^32*8 个字节。但通常你以字节为单位来寻址内存,即使到今天也是如此。 (4认同)
  • 寻址字节的原因是许多数据格式都是字节序列,最显着的是文本。 (2认同)