“如果计算机处理8位大小的数据并使用16位地址在内存中存储和检索数据,则其地址空间包含2 ^ 16(65536)字节或64k字节”
我的课本上有这样的陈述,我对此感到困惑。他们从哪里得到2 ^ 16?如果计算机使用16位地址,那为什么不只是2字节地址空间呢?教科书没有说明如何在微型计算机中存储内存,并且在介绍性章节中有此说明。我想念什么吗?
如果地址为16位,则表示在引用内存中的location时有16位。地址空间是有效地址的范围,而不是地址的物理大小。
这些地址从地址0(二进制0000 0000 0000 0000
)开始,一直到地址2 16-1(二进制1111 1111 1111 1111
)。总共可以引用2 16个地址。并且,如果每个地址都引用8位(即一个字节),则您可以使用这些地址引用的内存总量为2 16×8位,即2 16字节。
作为一个较小的示例,考虑一个具有3位地址的系统,每个地址都引用4位(半字节)。
Address | 0 1 2 3 4 5 6 7
Memory | 0000 0000 0000 0000 0000 0000 0000 0000
Binary |
address | 000 001 010 011 100 101 110 111
3位地址可以有2 3个值,从0到7,每个值都引用4位存储器,因此该系统总共有2 3 = 8个半字节存储器。
重要的是,请不要忘记地址空间不一定是实际可用的内存量-计算机使用一些方便的技巧来使用比其实际可用内存大得多的地址空间(例如64-比特系统理论上可以寻址2 64字节的内存,但是您的计算机甚至没有它的一小部分。]
作为类比,美国街道地址空间是(大约)这种形式的字符串集:
Firstname Lastname
XX Street name
Town, STATE zip code
然后这是一个地址:
John Doe
10 Main St.
Faketown, NY 20164
并且邮政服务用来投递信件的信封正面的写法类似于指针。