将内存地址转换为gibibytes

时间:2014-06-25 20:18:14

标签: math processor

字节可寻址的32位计算机可以处理2 ^ 32 = 4,294,967,296个地址。

为什么说它是4吉比特(GiB)。

如果我有2 ^ 32个地址,那么它们是多少位?每个地址也是32位长吗?如果是这样,我无法理解为什么它是4吉比特,因为它将是2 ^ 32 * 32位=> 2 ^ 32 * 32/8字节,最后(2 ^ 32 * 32/8)/ 2 ^ 30 gibibytes(计入1 gibibyte = 2 ^ 30字节)。

你能解释一下我怎么以及为什么我知道2 ^ 32个地址是4个gibibytes?

2 个答案:

答案 0 :(得分:1)

出于我们的目的,地址长度为32位。地址可以假设2 ^ 32个唯一值。每个唯一地址引用一个字节。如果你有一个所有可能地址的列表,它将有长度(32位/地址)*(2 ^ 32地址)= 32 * 2 ^ 32。

但是,您仍然只能引用2 ^ 32字节的内存。 2 ^ 32 = 2 ^ 2 * 2 ^ 30 = 4 * 2 ^ 30字节。由于2 ^ 30 =千兆字节,这意味着4千兆字节。

看起来你的错误在于将所有2 ^ 32地址(需要128 GB)所需的内存量与所有2 ^ 32地址可以引用的内存量相等(等于寻址单元的2 ^ 32倍 - 我们假定为字节,但如果您的机器以32位为单位工作,则可以使用32位地址空间引用16 GB ...尽管如此( (通常))机器使用字节可寻址的内存,我相信。)

答案 1 :(得分:1)

对于32位地址,您有2 ^ 32个最小可寻址单元的地址,通常是一个字节;所以2 ^ 10 = 1024,2 ^ 2 = 4,所以基本数学说:

2 ^ 32字节= 2 ^ 2 * 2 ^ 10 * 2 ^ 10 * 2 ^ 10字节= 4 * 1024 * 1024 * 1024字节

或者,重写:

4 * 1024 * 1024Kb

或者:

4 * 1024Mb

或4Gb