登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:急求:PLC编程,求一个实数32位内存数中1的个数!

点击:2163 回复:12

PLC编程,求一个实数32位内存数中1的个数!
最后修改:2013/12/23 13:45:28
13-12-23 12:21
啥玩意?我表示没看懂
13-12-23 13:06
你查相应PLC手册
13-12-23 13:13
无限不循环小数的话1的个数从何而来?起码应该给一个实数的有效位数吧!
13-12-23 13:17
不是和你说过用移位判断吗。你用的是S7-300的那就告诉你一个简单方法,如果判断MD0,你就先清零一个字如MW10,然后就一个一个的写M0.0开点输出MW10加1,M0.1开点输出MW10加1,.......一直写到M3.7 开点输出MW10加1,最后把MW10移动到你需要的位置。这是个笨方法,但不需要什么技巧。
13-12-23 14:07
那得写至少32条程序段吧
13-12-23 14:25
我指的实数是3.14159
13-12-23 14:26
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就是答案。
13-12-23 16:49
我要的就是第二种情况,一开始用的也是你说的方法,可是只能执行一次,不能循环起来……可以加我qq?362585177
13-12-23 17:01
该用户被锁定!
13-12-23 21:52

上一页下一页

工控新闻

更多新闻资讯