我知道 stackoverflow 中可能存在重复的问题。但这些问题并没有直接解决我的问题。我的理解是 32 位机器使用 32 位来存储内存地址,因此它可以拥有的最大内存是 2^32 位。但是,2^32 位 = 2^29 字节 = 2^29/10^9 = 0.5 GB。
我知道答案应该是 4 GB。但我根本无法弄清楚我的错误在哪里。帮助!
我相信 2^32 是指可寻址字节数,而不是内存中的总位数。您可以处理 40 亿字节(320 亿位)或 4 GB 的内存。例如
Address 0 | Address 1 |... | Address 2^32
........................................
8 bits | 8 bits | ...| 8 bits
编辑:32 位机器通常是指可以填充到 CPU 寄存器(而不是 RAM)中的位数。因此,1 个寄存器允许 32 位,可以寻址 2^32 字节的 RAM。
编辑:这是对超级用户的一个很好的解释: https ://superuser.com/questions/56540/32-bit-vs-64-bit-systems