回复:SCL 如何计算整数里面有多少个一

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23138
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2022-12-17 09:15:01

35楼

展开查看
以下是引用冬日在2022-12-15 22:59:44的发言 >34楼

试着写一个,比较土,但是好在简单明了

FUNCTION "SumOne" : Void

{ S7_Optimized_Access := 'TRUE' }

VERSION : 0.1

   VAR_INPUT 

      IN : LInt;

   END_VAR


   VAR_OUTPUT 

      Count : Int;

   END_VAR


   VAR_TEMP 

      TempLint : LInt;

      SumOne : Int;

   END_VAR



BEGIN

#TempLint := #IN;

#SumOne := 0;

WHILE #TempLint <> 0 DO

  IF (#TempLint MOD 2) = 1 THEN

    #SumOne += 1;

  END_IF;

  #TempLint := SHR(IN := #TempLint, N := 1);

END_WHILE;

#Count := #SumOne;

END_FUNCTION


移动、比较是最基础的方法。

没有楼主的代码效率高。楼主的方法是有几个1,就DO几次,没有多余的累积。


学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10566条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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