1

我在作业中被问到以下问题,但我不确定我是否做得正确。

“具有以下地址位数的处理器可以寻址的最大内存空间(即程序)是多少?(c)24位”

我输入了 011111111111111111111111(0 后跟 23 个 1)。它是否正确?如果没有,我如何找到这个问题的答案?如果您愿意,可以使用不同数量的位作为示例。谢谢你的帮助。

4

5 回答 5

4

011111111111111111111111不是正确答案。我假设您正在计算可以用有符号 24 位整数表示的最大数字。

内存地址总是无符号的,所以答案是可以用 24 位表示的项目数,即2^2411000000000000000000000000后跟 24 个零(假设我计数正确) - 因为地址范围包括0并达到1111111111111111111111(24 个 1 )。

于 2013-09-22T01:07:06.227 回答
3

2^N 字节,其中 N 是地址空间中的位数。

例如,8088 处理器有 20 位地址空间,因此它可以寻址 2^20 字节 = 1 MB。

地址空间是无符号的,所以 N 是完整的位数,而不是位数减 1。

于 2013-09-22T01:08:05.763 回答
1

编程中的地址通常代表内存中的一个位置。您始终可以表示与唯一编号一样多的位置。

您可以在 1 到 10 的范围内寻址多少个位置?10. 您可以在 1 到 2^24 的范围内寻址多少个位置?2^24。

所以你可以代表 2^24 个位置,但你没有正确回答。

于 2013-09-22T01:08:26.177 回答
1

你走错了路。

内存地址是无符号的,所以地址空间的大小是 2^24 字节,即 16Mb。

于 2013-09-22T01:10:51.577 回答
1

如果你有 2 位,你可以从 00 到 11、00、01、10、11,四个地址。四是 1 和两个零 0。两个地址位 一个和两个零是地址的数量或 2 的 2 次方。3 位 0b1000 或 8 个地址 2 的 3 次方,4 位 0b10000 或 16 个地址,2 的次方4 依此类推到您想要的任何位数。

于 2013-09-22T01:13:59.353 回答