“如果计算机处理8位大小的数据并使用16位地址在内存中存储和检索数据,则其地址空间将包含2 ^ 16(65536)字节或64k字节”
我的课本上有这样的陈述,我对此感到困惑。他们从哪里得到2 ^ 16?如果计算机使用16位地址,那为什么不只是2字节地址空间呢?教科书没有说明如何在微型计算机中存储内存,并且在介绍性章节中有此说明。我想念什么吗?
答案 0 :(得分:0)
如果地址为16位,则表示在引用内存中的位置时,您有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个半字节的内存。
在此系统中,唯一的有效地址是0、1、2、3、4、5、6和7,因此地址 space 是集合{0、1、2, 3,4,5,6,7}。
重要的一点是,不要忘记地址空间不一定是实际可用的内存量—计算机使用一些方便的技巧来使用比实际可用内存大得多的地址空间(例如64位系统理论上可以处理2 64 字节的内存,但您的计算机甚至没有这几分之一。
这里有两个类比,可以帮助您了解地址空间,地址和指针之间的区别:
网址空间是所有URL的集合,基本上是https://[domain]/[path]
形式的字符串集合。因此,https://example.com/page
是一个地址,this link是一个指向该地址的指针。
美国街道地址空间(大约)是以下形式的字符串集:
[First name] [Last name]
[number] [Street name]
[Town], [STATE] [zip code]
同样,这是一个地址:
John Doe
10 Main St.
Faketown, NY 20164
最后,指针类似于邮政服务用来递送信件的信封正面的文字。