有人问了一个问题:“给定 2^10 字节的内存,其中 4 字节的字是最小的可寻址单元,最低和最高地址是什么?”
最低地址是 0 答案键的最高地址是 2^10-4 我认为它会是 (2^10-1)/4,因为每 4 个字节都被寻址?
有人问了一个问题:“给定 2^10 字节的内存,其中 4 字节的字是最小的可寻址单元,最低和最高地址是什么?”
最低地址是 0 答案键的最高地址是 2^10-4 我认为它会是 (2^10-1)/4,因为每 4 个字节都被寻址?
我猜提出这个问题的人在他自己的定义中纠缠不清。事实上,如果“最小可寻址单元”是“4字节字”,那么在2^10字节中有2^8个不同的地址,这意味着最高地址是2^8-1或255。
在典型的计算机体系结构中,情况并非如此。最小的可寻址单元实际上是一个字节(因为所有地址都表示从“开始”开始的字节数),但有效地址只是那些除以 4 的地址。所以 0 是有效地址,4 是有效地址,但是尝试使用 3 会导致异常。顺便说一下,这被称为“对齐”,不同的指令可能需要不同的对齐,其可以从 1 到 128 不等,有时甚至更多。通常虽然它是 2 的幂,因为它们很容易使用。
我想这个问题实际上是关于对齐的,但是它的措辞很尴尬。您也可以尝试向您的老师询问这个问题,他们应该能够解决问题。
因此,您有 2^10 个字节,即 1024 个字节,即 1MB。现在你的内存是 4 字节对齐的,所以第一个地址是:0x4,最后一个地址是 1020/4 = 255,即十六进制的 0xFF。
你想要最高的地址,所以你的地址键是正确的。最高地址将是您有足够空间(4 个字节)来添加数据的位置。您的回答只是产生内存可以容纳的 4 字节数据项的数量。