我不明白内存寻址中的某些内容



我有一个非常简单的(n00b)问题。

20位外部地址总线提供1 MB物理地址空间(2^20=1048576)。(维基百科)

为什么是1M字节?

2^20 = 1,048,576 bit = 1Mbit = 128KByte not 1MB

我误解了什么。

当您有20位时,您可以寻址到2^20。这是您的范围,而不是位数。

也就是说,如果你有8位,你的范围是255(无符号),而不是2^8位。

因此,使用20位,您最多可以寻址2^20字节,即1MB

也就是说,用20位可以表示从0到2^20=1048576的地址。也就是说,你可以引用高达1MB的内存。

1 << 20地址,即1,048,576字节可寻址。因此,有1MB的物理地址空间。

因为最小的可寻址内存单元(通常情况下,有些体系结构具有较小的位可寻址内存)是字节,而不是位。也就是说,每个地址指的是一个字节,而不是一个位。

你问为什么?几乎从不需要直接访问单个位,如果需要,您仍然可以加载周围的字节,并通过位掩码和移位来获得该位。增加每个地址的位数可以使您在相同的地址范围内寻址更多的内存。

请注意,严格地说,一个字节的不是8位的,尽管它现在无处不在。但是,不管字节大小如何,都要将比特分组在一起,以便能够处理更大数量的比特。

最新更新