【发布时间】:2013-05-07 00:19:27
【问题描述】:
我知道 stackoverflow 中可能存在重复的问题。但这些问题并没有直接解决我的问题。我的理解是 32 位机器使用 32 位来存储内存地址,因此它可以拥有的最大内存是 2^32 位。但是,2^32 位 = 2^29 字节 = 2^29/10^9 = 0.5 GB。
我知道答案应该是 4 GB。但我根本无法弄清楚我的错误在哪里。帮助!
【问题讨论】:
-
2^32 是可寻址的字节,而不是位。此外,1024b = 1KiB, 1024KiB = 1MiB, 1024MiB = 1GiB (使用十进制 K/M/G 也会稍微偏离数学,尽管命运的转折,制造商使用它来报告 [spindle] HDD 大小)。 .
-
具有 32 位地址寄存器的 32 位机器可以寻址 2^32 字节,因为地址选择了一个字节的所有位。
-
@user2246674 感谢您的快速回复。但是如何理解 32 位和 2^32 可寻址字节之间的关系呢?我只是有点困惑。
-
有 2^32 bytes 表示 2^32*8 bits(或 2^35 bits);但是现代计算机一般只能以字节为分辨率直接引用内存(有可以对字节执行位操作,但不能直接访问特定字节内的位)。
-
@user2246674 如果机器被称为 32 字节机器,我可以完全理解你的论点。但是,它们被称为 32 位。这仍然让我感到困惑。