一个算法问题

[复制链接]
2527|13
 楼主| dubge 发表于 2013-5-14 15:09 | 显示全部楼层 |阅读模式
TE, AN, ge, AI
shiwan=temp_data/0x1000000 ;     //0x100 00 00 得到八个字节中最高的字节                最高1                  00
    temp_data=temp_data%0x1000000;   //取余运算

    wan=temp_data/0x10000;          //0x100 00            2                                 01
    temp_data=temp_data%0x10000;   //取余运算

        qian=temp_data/0x100 ;         //0x100           3                                87
    bai=temp_data%0x100;    //取余运算                                          60

    shi=temp_data/0x01 ;
    ge=temp_data%0x01 ;


上边的shiwan,wan,qian,bai,shi,ge是什么意思??
bald 发表于 2013-5-14 16:48 | 显示全部楼层
这是读的谁的程序?
应该是十万、万、千、百、十、个。可除数怎么会有0X前缀?
huangxz 发表于 2013-5-14 16:58 | 显示全部楼层
dirtwillfly 发表于 2013-5-15 08:34 | 显示全部楼层
;P这个0X用的好奇葩。把源程序都贴出来,大家欣赏下
 楼主| dubge 发表于 2013-5-15 16:22 | 显示全部楼层
bald 发表于 2013-5-14 16:48
这是读的谁的程序?
应该是十万、万、千、百、十、个。可除数怎么会有0X前缀?
...

0X是16进制的意思吧?是不是除出来的数要是16进制?
huangxz 发表于 2013-5-15 16:31 | 显示全部楼层
dubge 发表于 2013-5-15 16:22
0X是16进制的意思吧?是不是除出来的数要是16进制?

在寄存器里面都是十六进制表示的
 楼主| dubge 发表于 2013-5-15 16:33 | 显示全部楼层
dirtwillfly 发表于 2013-5-15 08:34
这个0X用的好奇葩。把源程序都贴出来,大家欣赏下

void conversion(long temp_data)  
{  
   
   /*
    shiwan=temp_data/100000+0x30 ; //十万
    temp_data=temp_data%100000;   //取余运算
    wan=temp_data/10000+0x30 ;          //万
    temp_data=temp_data%10000;   //取余运算
        qian=temp_data/1000+0x30 ;         //千
    temp_data=temp_data%1000;    //取余运算
    bai=temp_data/100+0x30   ;         //百
    temp_data=temp_data%100;     //取余运算
    shi=temp_data/10+0x30    ;         //十
    temp_data=temp_data%10;      //取余运算
    ge=temp_data+0x30;                          //个
        */
        shiwan=temp_data/0x1000000 ;     //0x100 00 00 得到八个字节中最高的字节                最高1                  00
    temp_data=temp_data%0x1000000;   //取余运算

    wan=temp_data/0x10000;          //0x100 00            2                                 01
    temp_data=temp_data%0x10000;   //取余运算

        qian=temp_data/0x100 ;         //0x100           3                                87
    bai=temp_data%0x100;    //取余运算                                          60

    shi=temp_data/0x01 ;
    ge=temp_data%0x01 ;

  
}

void bmp085Convert()
{
    unsigned int ut;
        long up;
        long x1, x2, b5, b6, x3, b3, p;
        unsigned long b4, b7;
        long  temperature;
        long  pressure;
   // xdata float ui;
//        uint left;
       
        ut = bmp085ReadTemp();
        ut = bmp085ReadTemp();           // 读取温度
        up = bmp085ReadPressure();
        up = bmp085ReadPressure();  // 读取压强
       
        x1 = ((long)ut - ac6) * ac5 >> 15;
        x2 = ((long) mc << 11) / (x1 + md);
        b5 = x1 + x2;
        temperature = (b5 + 8) >> 4;

    conversion(temperature);

        Send_Byte(qian);
        Send_Byte(bai);
}
源程序相当长,就把相关的贴出来了
 楼主| dubge 发表于 2013-5-15 16:35 | 显示全部楼层
huangxz 发表于 2013-5-15 16:31
在寄存器里面都是十六进制表示的

哦哦哦,我说错了,我把源程序的一部分贴出来了,你看看~
huangxz 发表于 2013-5-15 17:15 | 显示全部楼层
dubge 发表于 2013-5-15 16:35
哦哦哦,我说错了,我把源程序的一部分贴出来了,你看看~

:lol这样就没问题了嘛
SLEET1986 发表于 2013-5-15 17:30 | 显示全部楼层
这个是啥算法不是算法,显示数字而已
 楼主| dubge 发表于 2013-5-15 18:46 | 显示全部楼层
SLEET1986 发表于 2013-5-15 17:30
这个是啥算法不是算法,显示数字而已

是是怎么显示数字的啊,搞不懂shiwan=temp_data/0x1000000 ;这个的意思啊~
dirtwillfly 发表于 2013-5-15 20:35 | 显示全部楼层
    temp_data=temp_data%0x10000;   //取余运算

        qian=temp_data/0x100 ;         //0x100           3                                87
    bai=temp_data%0x100;    //取余运算                                          60                  //(这一句前后是不是少语句?

    shi=temp_data/0x01 ;
 楼主| dubge 发表于 2013-5-16 19:10 | 显示全部楼层
dirtwillfly 发表于 2013-5-15 20:35
temp_data=temp_data%0x10000;   //取余运算

        qian=temp_data/0x100 ;         //0x100        ...

没有,我都Copy下了来了
dirtwillfly 发表于 2013-5-16 19:49 | 显示全部楼层
dubge 发表于 2013-5-16 19:10
没有,我都Copy下了来了

奇怪的算法,还是没弄懂:L
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

76

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部