|
有大神能精簡下下面的代碼嗎?謝謝了。原理知道。但是不知道怎么算。
number除以32,得出的商乘以0x0200,再加上0x1800就可以得到a_addr了
number除以32,得到的余數(shù)再乘以16,就可以得到a_addr了。但是
打印出來的數(shù)據(jù)不對。看看有大神幫忙看看錯在那里,應(yīng)該怎么寫才行。
我自己寫的,但是不對
number=51;
a_addr = (number / 32)*0x0200+0x1800 ;
b_addr = (number % 32)*16 ;
printf("開始地址=%bd \n", a_addr);
printf("\r\n");
printf("內(nèi)存開始地址=%bd \n", b_addr);
printf("\r\n");
下面是需要精簡的代碼
if (0 = < number < 32) //如果是第1扇區(qū)
{
a_addr = 0x1800;
b_addr = number * 16;
}
else if (32 = < number < 64) //如果是第2扇區(qū)
{
a_addr = 0x1A00;
b_addr = (number * 16) - 0x0200;
}
else if (64 = < number < 96) //如果是第3扇區(qū)
{
a_addr = 0x1C00;
b_addr = (number * 16) - 0x0400;
}
else if (96 = < number < 128) //如果是第4扇區(qū)
{
a_addr = 0x1E00;
b_addr = (number * 16) - 0x0600;
}
else if (128 = < number < 160) //如果是第5扇區(qū)
{
a_addr = 0x2000;
b_addr = (number * 16) - 0x0800;
}
|
|