请教高手关于32位加法计算的问题 点击:490 | 回复:6



football5032

    
发表于:2012-03-31 18:49:48
楼主
求助帖20分-已结帖

在32位寄存器中的数值是正2147483647到 负2147483648变化的,那么我用C235(值为2147483640)加上D16(值为18)结果放入D20当中,在PLC中显示D20的结果为10,为什么不是负的2147483638 ?求高手帮忙解答一下,程序如下:

ld m8002

dmov k2147483640

dmov k18 d16

ld m8000

dadd c235 d16 d20

end

我的目的是要不复位高速计数器的情况下计到一定数量的脉冲后,再利用高速计数置位指令对某个元件(Y或M等)进行置位,比如,我第一次取C235的值为2147483640,我需要它再计数18个脉冲后对Y0置位,这个时候它的值应该为负2147483638,但在PLC计算中,如果我用2147483640加上18,得到的值却是10,而不是2147483638,这个问题困扰了我好多天了



楼主最近还看过



zhengruibing4431

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 2回
  • 年度积分:0
  • 历史总积分:32
  • 注册:2012年1月05日
发表于:2012-03-31 21:20:48
1楼

你是用什么指令加的,是用32么

青岛黄工

  • [版主]
  • 精华:5帖
  • 求助:89帖
  • 帖子:171帖 | 4776回
  • 年度积分:0
  • 历史总积分:24301
  • 注册:2007年4月02日
发表于:2012-03-31 21:27:40
2楼
看看最高位的变化吧,你将被加值减小12看看效果就明白了。。。。。。。。。

football5032

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 9回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2008年10月09日
发表于:2012-03-31 22:41:08
3楼
回复内容:
对:zhengruibing4431关于你是用什么指令加的,是用32么内容的回复:

是的,用的32位加法

football5032

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 9回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2008年10月09日
发表于:2012-03-31 22:42:28
4楼
回复内容:
对:青岛黄工关于看看最高位的变化吧,你将被加值减小12看看效果就明白了。。。。。。。。。 内容的回复:


没明白

miy_gongkong

  • 精华:0帖
  • 求助:2帖
  • 帖子:27帖 | 3065回
  • 年度积分:0
  • 历史总积分:12427
  • 注册:2008年9月18日
发表于:2012-04-01 08:41:25
5楼

你确认 D16 这个双字 的内容是 16 么?

 

football5032

  • 精华:0帖
  • 求助:2帖
  • 帖子:4帖 | 9回
  • 年度积分:0
  • 历史总积分:201
  • 注册:2008年10月09日
发表于:2012-04-01 10:13:35
6楼
引用 miy_gongkong 的回复内容:你确认 D16 这个双字 的内容是 16 么? 



D16双字的内容为18,因为我DMOV K18 D16
SSI ļʱ