为什么 32 位和 64 位的地址有两种不同的长度?

2024-02-03

当我在 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(使用前将#替换为@)

为什么 32 位和 64 位的地址有两种不同的长度? 的相关文章

随机推荐