我在作业中被问到以下问题,但我不确定我是否做得正确。
“具有以下地址位数的处理器可以寻址的最大内存空间(即程序)是多少?(c)24位”
我输入了 011111111111111111111111(0 后跟 23 个 1)。它是否正确?如果没有,我如何找到这个问题的答案?如果您愿意,可以使用不同数量的位作为示例。谢谢你的帮助。
我在作业中被问到以下问题,但我不确定我是否做得正确。
“具有以下地址位数的处理器可以寻址的最大内存空间(即程序)是多少?(c)24位”
我输入了 011111111111111111111111(0 后跟 23 个 1)。它是否正确?如果没有,我如何找到这个问题的答案?如果您愿意,可以使用不同数量的位作为示例。谢谢你的帮助。
否011111111111111111111111
不是正确答案。我假设您正在计算可以用有符号 24 位整数表示的最大数字。
内存地址总是无符号的,所以答案是可以用 24 位表示的项目数,即2^24
11000000000000000000000000
后跟 24 个零(假设我计数正确) - 因为地址范围包括0
并达到1111111111111111111111
(24 个 1 )。
2^N 字节,其中 N 是地址空间中的位数。
例如,8088 处理器有 20 位地址空间,因此它可以寻址 2^20 字节 = 1 MB。
地址空间是无符号的,所以 N 是完整的位数,而不是位数减 1。
编程中的地址通常代表内存中的一个位置。您始终可以表示与唯一编号一样多的位置。
您可以在 1 到 10 的范围内寻址多少个位置?10. 您可以在 1 到 2^24 的范围内寻址多少个位置?2^24。
所以你可以代表 2^24 个位置,但你没有正确回答。
你走错了路。
内存地址是无符号的,所以地址空间的大小是 2^24 字节,即 16Mb。
如果你有 2 位,你可以从 00 到 11、00、01、10、11,四个地址。四是 1 和两个零 0。两个地址位 一个和两个零是地址的数量或 2 的 2 次方。3 位 0b1000 或 8 个地址 2 的 3 次方,4 位 0b10000 或 16 个地址,2 的次方4 依此类推到您想要的任何位数。