带符号数的减法运算

在做模拟量采集的程序,为了增加稳定性而用求多次采样值的平均值。模拟输入是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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日
下一篇 2021年7月5日

相关推荐

发表回复

登录后才能评论