| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1076 人关注过本帖
标题:求更好的算法
只看楼主 加入收藏
andrewkewang
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
结帖率:88.89%
收藏
已结贴  问题点数:10 回复次数:3 
求更好的算法
ram地址如下所示,
图片附件: 游客没有浏览图片的权限,请 登录注册

ram的描述:ram分为4片,每片ram地址不连续,Ram1的0x00右边的地址是0x10,再右边是0x20,Ram2的0x04的右边是0x14,以此类推。
整个ram地址是从0x00000000—0x0005FFFF
想实现的算法是,有一个当前地址(4的倍数,如0x00000000,0x00000004,0x00000008等等,一直可以取到0x0005FFFC),
通过当前地址要得到“当前地址所在行所在片的首地址”。
举例说明,
if(current_addr==0x00 || current_addr==0x10 || 当前地址是0x20,或0x30,x040,0x50,0x60,0x70)
{return 0x00}
if(当前地址是0x08或0x18或0x28,0x38,0x48,0x58,0x68,0x78)
{return 0x08}
if(当前地址是0x184或0x194或0x1A4,0x1B4,0x1C4,0x1D4,0x1E4,0x1F4)
{return 0x184}
if(当前地址是0x5FF8C或0x5FF9C或0x5FFAC,0x5FFBC,0x5FFCC,0x5FFDC,0x5FFEC,0x5FFFC)
{return 0x5FF8C}
我已经通过switch判断每个地址的末两位(0x00,0x04,0x08,0x0C,0x10,...0xF0,0xF4,0xF8,0xFC)来检查当前地址在哪片哪行?
请教更优的算法!
2016-01-07 19:53
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
return current_addr & 0x5FF8C;

重剑无锋,大巧不工
2016-01-08 00:56
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
不好意思,是0x7FF8C

重剑无锋,大巧不工
2016-01-08 01:10
andrewkewang
Rank: 2
等 级:论坛游民
帖 子:44
专家分:42
注 册:2013-11-22
收藏
得分:0 
回复 3楼 beyondyf
对!末两位得取0x8C
谢谢了!!
这样的话0xFFFFFF8C也可以

[此贴子已经被作者于2016-1-8 08:23编辑过]

2016-01-08 08:19
快速回复:求更好的算法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018319 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved