本帖最后由 Jack602 于 2010-11-26 08:51 编辑
问题是这样的:
一个16位的数据(范围是0~65536),因为只支持1字节的加减乘除,所以有点难分离出2字节的个十百千万位来。
tempA 变量保存16位的高8位
tempB 变量保存16位的低8位
怎么求得?
temp1 变量保存16位数据的个位
temp2 变量保存16位数据的十位
temp3 变量保存16位数据的百位
temp4 变量保存16位数据的千位
temp5 变量保存16位数据的万位
为什么如下的程序就不可以
void Adjust(uint val)
{
while(val>=10000)
{
val -= 10000;
temp1++;
}
while(val>=1000)
{
val -= 1000;
temp2++;
}
while(val>=100)
{
val -= 100;
temp3++;
}
while(val>=10)
{
val -= 10;
temp4++;
}
temp5 = val;
}
理由是不能16位的数据操作?
-------------------------------------------
但如下的程序就可以?
if( Var2 >= 60000 ){ i = 6; Var2 -= 60000; }
if( Var2 >= 40000 ){ i = 4; Var2 -= 40000; }在这里不也超出了1字节运算吗? 所以请高手在解释解释 谢谢
if( Var2 >= 20000 ){ i = 2; Var2 -= 20000; }
if( Var2 >= 10000 ){ i += 1; Var2 -= 60000; }
DispBuf[4] = i;
if( Var2 >= 8000 ){ i = 8; Var2 -= 8000; }
if( Var2 >= 4000 ){ i = 4; Var2 -= 4000; }
if( Var2 >= 2000 ){ i += 2; Var2 -= 2000; }
if( Var2 >= 1000 ){ i += 1; Var2 -= 1000; }
DispBuf[3] = i;
if( Var2 >= 800 ){ i = 8; Var2 -= 800; }
if( Var2 >= 400 ){ i = 4; Var2 -= 400; }
if( Var2 >= 200 ){ i += 2; Var2 -= 200; }
Var1 = Var2;
if( Var1 >= 100 ){i += 1;Var1 -= 100; }
DispBuf[2] = i;
i = 0;
if( Var1 >= 80 ){i = 8; Var1 -= 80; }
if( Var1 >= 40 ){i = 4; Var1 -= 40; }
if( Var1 >= 20 ){i += 2; Var1 -= 20; }
if( Var1 >= 10 ){i += 1; Var1 -= 10; }
DispBuf[1] = i;
//最后一位为个位
DispBuf[0] = Var1; |
|