找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 900|回复: 9
收起左侧

8位的数组,合并16位进行比较最大值和记录其下标,C语言代码有没有错误,是否可以简化

[复制链接]
ID:709761 发表于 2022-3-3 16:48 | 显示全部楼层 |阅读模式
uchar mm[]={0x32,0x21,0x22,0x45,0x54,0x11,0x66,0x22,0x32,0x21};
           uint max = (mm[0]<<8)|mm[1];
        uint dd;
//     uchar kk;//下标
     for (  i4 = 2; i4 < 10; i4++)
        {
                dd= (mm[i4]<<8)|mm[++i4];

         if (max < dd)
                                         {
             max = dd;
//                                                 kk=i4;
         }
     }

回复

使用道具 举报

ID:624769 发表于 2022-3-3 20:59 | 显示全部楼层
新建一个C文件, 添加到项目中,
在这个新建的C文件中,
extern  uint  mm[5];
然后, 在这个新的C文件里,就可以直接用16位来比较了, 不需要拼接。
回复

使用道具 举报

ID:709761 发表于 2022-3-4 07:39 | 显示全部楼层
188610329 发表于 2022-3-3 20:59
新建一个C文件, 添加到项目中,
在这个新建的C文件中,
extern  uint  mm[5];

后面需要串口发送8位数据
回复

使用道具 举报

ID:844772 发表于 2022-3-4 08:56 | 显示全部楼层
程序结果是不是不对啊? mm[0]就是8位的,你mm[0]<<8,是要给它清零吗?应该是max=mm[0];max=(max<<8)|mm1[1];
回复

使用道具 举报

ID:514901 发表于 2022-3-4 09:18 | 显示全部楼层
uchar mm[]={0x32,0x21,0x22,0x45,0x54,0x11,0x66,0x22,0x32,0x21};
uint *num = (uint *)mm;
uint max;
uchar index,i;
max = num[0];
index = 0;
for(i = 1;i < 5;i++)
{
    if(max < num[i])
    {
        max = num[i];
        index = i;
    }
}
回复

使用道具 举报

ID:844772 发表于 2022-3-4 09:25 | 显示全部楼层
郑汉松 发表于 2022-3-4 09:18
uchar mm[]={0x32,0x21,0x22,0x45,0x54,0x11,0x66,0x22,0x32,0x21};
uint *num = (uint *)mm;
uint max;
...

这个在C51没试过,但在微机中用过,类型使用的是short,因为int是4字节了,想说的是这个跟楼主要求不大一样,mm[0]是低八位;mm[1]是高八位。要是谁发现51是相反的,麻烦留言,我一时不方便试验。
回复

使用道具 举报

ID:213173 发表于 2022-3-4 09:26 | 显示全部楼层
李冬 发表于 2022-3-4 07:39
后面需要串口发送8位数据

通常用整形数组比较出最大值,串口分别发送高8位和低8位数据。
回复

使用道具 举报

ID:514901 发表于 2022-3-4 09:54 | 显示全部楼层
glinfei 发表于 2022-3-4 09:25
这个在C51没试过,但在微机中用过,类型使用的是short,因为int是4字节了,想说的是这个跟楼主要求不大一 ...

C51中int是十六位,楼主程序来看第一个字节高八位,第二个字节低八位
回复

使用道具 举报

ID:123289 发表于 2022-3-4 11:51 | 显示全部楼层
如果是8位机,先比高位再比低位速度最快。
如果是16位机,则先组合再比较速度快。
回复

使用道具 举报

ID:624769 发表于 2022-3-4 12:12 来自手机 | 显示全部楼层
李冬 发表于 2022-3-4 07:39
后面需要串口发送8位数据

发的时候在原来的c文件里发。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表