您现在所在的是:

PLC论坛

回帖:12个,阅读:2055 [上一页] [1] [2] [下一页]
662
362585177
文章数:10
年度积分:50
历史总积分:662
注册时间:2013/12/22
发站内信
发表于:2013/12/23 12:21:08
#0楼
PLC编程,求一个实数32位内存数中1的个数!
[此贴子已经被jint于2013/12/23 13:45:28编辑过]
此帖发自手机工控论坛
7722
w71412659
文章数:1455
年度积分:50
历史总积分:7722
注册时间:2013/5/8
发站内信
2018论坛魅力之星
发表于:2013/12/23 13:06:48
#1楼
啥玩意?我表示没看懂
兽人永不为奴,除非包吃包住!
39180
知道一点
文章数:23086
年度积分:872
历史总积分:39180
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2013/12/23 13:13:21
#2楼
你查相应PLC手册
快乐 幸福 自由 比什么都重要
19060
qjj740210
文章数:4848
年度积分:414
历史总积分:19060
注册时间:2005/9/24
发站内信
2018春节活动(二)
2017国庆活动(二)
2017春节活动(二)
2016国庆活动(二)
西门子触摸屏(一)
三菱电机活动(二)
西门子logo体验(三)
西门子PLC体验(二)
2013辞旧迎新
发表于:2013/12/23 13:17:27
#3楼
无限不循环小数的话1的个数从何而来?起码应该给一个实数的有效位数吧!
苦逼的奋斗者
5084
zytlc
文章数:849
年度积分:50
历史总积分:5084
注册时间:2006/8/9
发站内信
发表于:2013/12/23 14:07:41
#4楼
不是和你说过用移位判断吗。你用的是S7-300的那就告诉你一个简单方法,如果判断MD0,你就先清零一个字如MW10,然后就一个一个的写M0.0开点输出MW10加1,M0.1开点输出MW10加1,.......一直写到M3.7 开点输出MW10加1,最后把MW10移动到你需要的位置。这是个笨方法,但不需要什么技巧。
662
362585177
文章数:10
年度积分:50
历史总积分:662
注册时间:2013/12/22
发站内信
发表于:2013/12/23 14:25:48
#5楼
那得写至少32条程序段吧
此帖发自手机工控论坛
662
362585177
文章数:10
年度积分:50
历史总积分:662
注册时间:2013/12/22
发站内信
发表于:2013/12/23 14:26:56
#6楼
我指的实数是3.14159
此帖发自手机工控论坛
7722
w71412659
文章数:1455
年度积分:50
历史总积分:7722
注册时间:2013/5/8
发站内信
2018论坛魅力之星
发表于:2013/12/23 16:49:34
#7楼
3.14159,按照你的意思是不是就要返回2(就是有两个1)?如果是这样,我给你个思路,3.14159先转成整数314159,怎么转,几位有效数字你自己解决,然后用314159除以10求模,设为A1,这时候判断如果A1==1,B自增1(B就是你要返回的数,就是有几个1);然后314159/10=31415;再循环上一步……一直到最后为3<10结束,这时候B的值就是答案。

如果你要的是这种情况:
例如,32位数字是:1010……1010=Y
那你就这么办:
设X=00000……1
求:Z=X&Y,如果Z==0,B自增1(B是要返回的值),不过Z不=0,B不变;然后Y右移1(或者X左移1),此时Y=1010……101,(或者X=000……10);
循环上一步;
一直到Z<1结束,此时的B就是答案。
兽人永不为奴,除非包吃包住!
662
362585177
文章数:10
年度积分:50
历史总积分:662
注册时间:2013/12/22
发站内信
发表于:2013/12/23 17:01:21
#8楼
我要的就是第二种情况,一开始用的也是你说的方法,可是只能执行一次,不能循环起来……可以加我qq?362585177
此帖发自手机工控论坛
匿名用户
文章数:N/A
年度积分:0
历史总积分:0
注册时间:2012/7/23
发站内信
发表于:2013/12/23 21:52:12
#9楼
该用户被锁定,回复内容不予显示!

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

78.0005