一个问题被问到:“给定2^10字节的内存,其中4字节字是最小的可寻址单元,那么最低和最高地址是什么?”
最低的地址是0,答案键的最高地址是2^10-4,我想它应该是(2^10-1)/4,因为每4个字节都有地址?
发布于 2012-02-26 05:53:49
我猜提出这个问题的人被他自己的定义搞混了。实际上,如果“最小可寻址单元”是一个"4字节字“,那么在2^10字节中就有2^8个不同的地址,这意味着最高地址是2^8-1或255。
但在典型的计算机体系结构中,情况并非如此。最小的可寻址单元实际上是一个字节(因为所有地址都表示从“开始”开始的字节数),但有效地址只是那些除以4的地址。因此,0是有效地址,4是有效地址,但尝试使用3会导致异常。顺便说一句,这被称为“对齐”,不同的指令可能需要不同的对齐,从1到128,有时甚至更多。通常情况下,它是2的幂,因为它们很容易处理。
我想这个问题实际上是关于对齐的,但它的表达方式很尴尬。你也可以试着向你的老师询问这件事,他应该能够把事情说清楚。
发布于 2012-02-26 05:46:54
因此,您有2^10字节,即1024字节,即1MB。现在你的内存是4字节对齐的,所以第一个地址是: 0x4,最后一个地址是1020/4 = 255,这是十六进制的0xFF。
发布于 2012-02-26 05:47:32
你想要最高的地址,所以你的地址键是正确的。最高地址是您有足够的空间(4字节)来添加数据的位置。你的回答只会给出内存可以容纳的4字节数据项的数量。
https://stackoverflow.com/questions/9448328
复制相似问题