回复:为什么27648大于34123?

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

发布于 2013-02-27 10:05:30

18楼

quote:以下是引用Zane在2013-02-26 00:35:42的发言:
其实这个问题有点蹊跷,大家有没有觉得?
当然,廖老师的解答可以用来解释这个问题,但我依旧觉得有问题是楼主如何从MW166里读到34123这个值的?

如果是在程序块的在线监测,在线显示的值应该是该指令执行时累加器的值,从上述结果来看,MW166里的数显然已经是被系统认作一个负数了,那显示的也应该是个负数才对啊。

所以,我猜测楼主读到的是个16进制的读数,在用计算机转换后直接报了来,如果直接转成整数显示,就不会再有这个问题了,所以仔细想来觉得还不是WORD和INT的问题,而是楼主无意之间给大家吃的药。

结论是,无论你如何定义数据WORD也好,INT也好,运算指令如果是处理带符号数的,那就认为寄存器的数就是有符号数,所以要做大于32767的算术运算,变量长度必须是4个字节


程序状态监控时显示的“表达式”选“自动”,MW166中是负数, “表达式”选“十进制” 显示的就是34123:



楼主有点不厚道,大家在为他脑筋急转弯,他却不陪我们玩了。
追求完美
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。