记忆范围计算

时间:2015-11-06 13:01:55

标签: memory hex ram

我有一个关于计算内存地址的问题:

我有3个内存块:

- 1x 1KByte (IC1) - 2^10 Byte
- 2x 4KByte (IC2 + IC3)  2^12 Byte

到目前为止,我计算了这些内存地址:

IC1:

0000 0000 0000 0000 (Starting adress)
0000 0011 1111 1111 (Ending adress, I got this from inverting the last 10 digits)

IC2:

0000 0100 0000 0000 (Starting adress)- Last ending adress +1
0000 1011 1111 1111 (Ending adress, I got this from inverting the last 12 digits)

但是,在IC3中必须有一些方法可以将进位位放入我的第一个0000块中,因为当仅使用3个最后3个十六进制数字时,我的空间不足:

IC2:

0000 1100 0000 0000 (Starting adress)- Last ending adress +1

现在的结局地址是什么?如果我再次反转最后12位数字,我会得到一个已经在使用的十六进制地址。很明显,下一个十六进制数字必须增加到1,但我找不到这样做的规则。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我不确定你为什么要使用bit翻转,看起来它应该是一个非常有效的实现,如果它工作,但它似乎不是:

你的IC2块起始地址(十六进制)是400(从内存开始是1K,到目前为止都是好的),但十六进制的结束地址是BFF,它应该是13FF(1k + 4k = 5k)二进制文件是0001 0011 1111 1111

有没有理由不使用加法而不是位翻转来计算这些地址?