我有一个关于计算内存地址的问题:
我有三个内存块:
- 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个十六进制数时,空间就用完了:
IC2:
0000 1100 0000 0000 (Starting adress)- Last ending adress +1现在的结尾地址是什么?如果我再倒置最后12个数字,我将得到一个已经在使用的十六进制地址。很明显,下一个十六进制数字必须增加到1,但我找不到这样做的规则。
有什么建议吗?
发布于 2015-11-06 13:16:40
我不知道为什么要为此使用位翻转,它看起来应该是一个非常有效的实现,如果它工作,但它似乎没有:
您的IC2块起始地址(十六进制)是400 (到目前为止,这是内存开始时的1K ),但是十六进制中的结束地址是BFF,当它应该是二进制的13 BFF (1k+4k = 5k)时是0001 0011 1111 1111。
你为什么不能用加法而不是位翻转来计算这些地址呢?
https://stackoverflow.com/questions/33567428
复制相似问题