在做模拟量采集的程序,为了增加稳定性而用求多次采样值的平均值。模拟输入是12位采样,计算中,如果采样次数大于16次就有可能和的长度大于一个字,故需要用双字来存储采样和。这时需要把输入转换成32位。我看了一个例程,当输入值为负值时,最高有效字增添1,当输入值为正值时,最高有效字增添0.之后就直接把输入值和原有的采样和做加法运算。我的问题是,当输入值是负值时,PLC是如何做的运算,使之可以用加法代替。我自己算了一下,比如0010110101001001+1111111101010101(前8个1代表负号),得出的值并不是我要的相减的结果。求教各位了。
问题补充:
PLC内部减法是如何做的?
最佳答案
2进制中负数是正数的补码,也就是正数的反码加1.
比如正数是12,16位2进制为:0000_0000_0000_1100
其反码为:1111_1111_1111_0011
补码为反码加1:1111_1111_1111_0100
所以-12的16位2进制为:1111111111110100
不是仅仅把高位字替换为1那么简单,你需要学习一下最最基础的2进制知识!
补充:PLC内部减法也是用这种方式进行加法运算的。
提问者对于答案的评价:
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc353748.html