首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存范围计算

内存范围计算
EN

Stack Overflow用户
提问于 2015-11-06 13:01:54
回答 1查看 247关注 0票数 0

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

我有三个内存块:

代码语言:javascript
复制
- 1x 1KByte (IC1) - 2^10 Byte
- 2x 4KByte (IC2 + IC3)  2^12 Byte

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

IC1:

代码语言:javascript
复制
0000 0000 0000 0000 (Starting adress)
0000 0011 1111 1111 (Ending adress, I got this from inverting the last 10 digits)

IC2:

代码语言:javascript
复制
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:

代码语言:javascript
复制
0000 1100 0000 0000 (Starting adress)- Last ending adress +1

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

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-06 13:16:40

我不知道为什么要为此使用位翻转,它看起来应该是一个非常有效的实现,如果它工作,但它似乎没有:

您的IC2块起始地址(十六进制)是400 (到目前为止,这是内存开始时的1K ),但是十六进制中的结束地址是BFF,当它应该是二进制的13 BFF (1k+4k = 5k)时是0001 0011 1111 1111。

你为什么不能用加法而不是位翻转来计算这些地址呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33567428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档