签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
SUBROUTINE_BLOCK on的个数:SBR0
TITLE=子程序注释
VAR_INPUT
首址指针:DWORD;
连续数:BYTE;
END_VAR
VAR_OUTPUT
个数:WORD;
VAR
临B1:BYTE;
临W1:WORD;
临W2:WORD;
连续数W:WORD;
BEGIN
Network 1
// 程序段注释
LD SM0.0
BTI LB4, LW12
MOVW 0, LW5
Network 2
FOR LW10, 1, LW12
Network 3
MOVB *LD0, LB7
INCD LD0
Network 4
FOR LW8, 1, 8
Network 5
RLB LB7, 1
A SM1.1
INCW LW5
Network 6
NEXT
Network 7
END_SUBROUTINE_BLOCK
改天有时间再回来完善这个程序。
有问题的先留个言。日后处理。下班。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=64&a_id=1650853
300以上的有个库指令bitSum,1500版块前两天也有人问怎样用scl编写求幂运算,只不过求以2为底数的幂可以反过来字节或字里有多少个0(右移到1停止计数),回帖也有以200smart的梯形图,也是以右移溢出sm1.1为标志累加。
1500的exp增加了expt指令,可以不限于以e为底数求幂。
复制楼主全部程序内容(你应该知道最后两行不是程序内容吧)。在桌面新建一个文本文件(*.txt),粘贴进去,保存,关闭。修改扩展名txt成awl。打开编程软件,导入,找到桌面这个awl文件。导入后将会看到多了一个子程序。把子程序登记为库程序,以后方便调用。
程序以字节为单位,255以内个连续字节,计算全体on的个数。
程序不检测间接寻址错,间接寻址能找到的字节都可以计算。
好好学习天天向上,谢谢楼主
谢谢楼主提供了一个机会。
这个问题据说是华为还是哪个公司的面试题, m是一个32位整数;
奇数位右移1, 和 偶数位的值相加, 得到每两位的1的个数的分布;
m = (m & 0xAAAAAAAA) >> 1+ (m & 0x55555555);
按每两位分组, 奇数组右移2, 和 偶数组的值相加, 得到每四位1的分布;
m = (m & 0x CCCCCCCC) >> 2 + (m & 0x33333333);
按每四位分组, 奇数组右移4, 和偶数组相加, 得到每8为位1的分布;
m = (m & F0F0F0F)) >> 4 + (m & 0x0F0F0F0F0F);
4.每8??位 分组, 奇数组右移动8, 和偶数组相加, 得到每16位1的分布
m = m ( & FF00FF00) >> 8 + (m & 0x00FF00FF);
5.
m的高低字相加, 就是m的1的个数;
记录一下,多谢分享
一个字节多少位,我是这样算的
数量少的时候我是赞成你这样做的。但是呢,我这个程序是可以处理255个字节的啊。不知道大家有没有留意这个事情呢?
怎样可以让每个想找这个问题答案的人都能找到这个帖?
置顶加推荐
引用12楼详细内容:
没用的。这话题哪来这么大能耐置顶!只是想可能1000人之中的1个人能找到。
怎么叫做外部for?
你是说100个字节就for10楼的程序100次?
这个功能非常好!
统计1/0的总数,算法有好几种,网上有个专讲这个求解这个问题的页面,类似搜索关键字 sum 1。
当时用1200有过这个问题,我当时直接用了个笨办法,IF为真就是1 ELSE就是0,所有0和1加在一起求和。
这个没弄过,受教了
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录