回复:S7200数据序及对应位置排序

芳季

西门子1847工业学习平台

  • 帖子

    15610
  • 精华

    102
  • 被关注

    966

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2012-07-10 22:06:07

7楼

我想到一点先说一点。我的原则是源数据不动。
另外开辟一块区域,大小跟源数据的个个个数数数一样大小。里面放置源数据的序号。由0(或1开始)加加加一一一递增到最后。表示第一个数;第二个数;第三个数……
冒泡的时候用的比较指令的两个操作数都用间接寻址。第一次比较要比较VD1000和VD1004。那么按照间接寻址,第一个操作数变成(0*4+1000)=1000。然后在1000的前面加上16#800。也就是16#8001000。第二个操作数变成(1*4+1000)=1004。16#8001004。然后就比较这两个间接寻址目标的值。
比较后得到结果。假如符合比较关系,不用管。不符合比较关系的,调换位置。这回调换位置就不是调换目标的值,而是调换序号的这一块的前两个序号,也就是序号0和序号1。经过这样的调换序号变成了1 0 2 3 4 5 ……
就这样,比较是比较目标的实数,换位是换序号的次序。由于序号可以用字节表示(最多可以排序256个值)省下不少的空间。而且数据源不需要移动。但是指针操作相当多。每一次比较都要确立一次指针,任务非常繁重。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33274条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。