打印

分离(个、十、百、千、万)位疑问

[复制链接]
1747|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zx4798|  楼主 | 2010-10-27 00:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
第一种算法:
为什么是Var》=60000,40000,20000,10000,求指教,多谢
if( Var2 >= 60000 ){ i = 6; Var2 -= 60000; }
                                                        if( Var2 >= 40000 ){ i = 4; Var2 -= 40000; }
                                                        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;
第二种算法
tempB+=(~0x64)+1是做什么,求指教

uchar tempA;                        //    变量保存16位的高8位
uchar        tempB;                        //    变量保存16位的低8位

//怎么求得?
uchar temp1;    //变量保存16位数据的个位
uchar        temp2;    //变量保存16位数据的十位
uchar        temp3;    //变量保存16位数据的百位
uchar temp4;    //变量保存16位数据的千位
uchar temp5;    //变量保存16位数据的万位

void calculate(void)
{
  temp1=0;
  temp2=0;
  temp3=0;
  temp4=0;
  temp5=0;
  
  //10000=0x2710
  while(((tempA==0x27)&&(tempB>=0x10))||(tempA>0x27))                //>=10000?
        {
    if(tempB>=0x10)                        //-10000
    {
      tempB-=0x10;
      tempA-=0x27;        
    }
    else
    {
            tempB+=(~0x10)+1;
            tempA-=0x27+1;
    }
          temp5++;
        }
        
        //1000=0x03e8
        while(((tempA==0x03)&&(tempB>=0xe8))||(tempA>0x03))                //>=1000?
        {
    if(tempB>=0xe8)                        //-1000
    {
      tempB-=0xe8;
      tempA-=0x03;        
    }
    else
    {
            tempB+=(~0xe8)+1;
            tempA-=0x03+1;
    }
          temp4++;
        }
        
        //100=0x0064
        while(((tempA==0)&&(tempB>=0x64))||(tempA>0))                //>=100?
        {
    if(tempB>=0x64)                        //-100
    {
      tempB-=0x64;
    }
    else
    {
            tempB+=(~0x64)+1;
            tempA-=1;
    }
          temp3++;
        }
        
        //10=0x0a
        while(tempB>=0x0a)                //>=10?
        {
      tempB-=0x0a;
      temp2++;
        }
        
        //1=0x01
        while(tempB>=0x01)                //>=1?
        {
      tempB-=0x01;
            temp1++;
        }

        
}




大虾们最好能够详细讲解一下

相关帖子

沙发
365026266| | 2010-10-27 00:35 | 只看该作者
不知道

使用特权

评论回复
板凳
ayb_ice| | 2010-10-27 08:22 | 只看该作者
算法不对

使用特权

评论回复
地板
老鱼探戈| | 2010-10-27 12:37 | 只看该作者
如果只需要分离一个 16位数据
建议不要用这两种方法(我不知道对不对)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

53

帖子

1

粉丝