当我在 64 位机器上运行此代码时:
#include <stdio.h>
int main()
{
int a[10];
printf("%p",&a);
return 0;
}
它输出:
0x7fffe9ebf984 (14 digits)
在一本教科书中我发现了这个:
我的电脑的内存地址是32位,用8位表示
十六进制数字。
我的问题是:
为什么 32 位和 64 位的地址有两种不同的长度?
32位中如何用8位数字表示地址,64位中如何用14位数字表示地址?
该内存地址有 12 位数字,而不是 14 位。每个数字都是一个 4 位字。 12*4 = 48,即 256 TB 的地址空间。当前的 CPU 仅使用完整 64 位地址空间的低 48 位,因为这允许构建更便宜的晶体管(在不久的将来我们不会完全使用我们可以从 64 位使用的内存)。当我们达到 48 位限制时,制造商可能会制造出真正使用 64 位完整地址空间的 CPU,但现在还没有必要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)