求更好的算法
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)来检查当前地址在哪片哪行?
请教更优的算法!