回复:Dword只能是正数吗?

最爱FC

  • 帖子

    56
  • 精华

    0
  • 被关注

    2

论坛等级:游民

注册时间:2012-05-15

普通 普通 如何晋级?

发布于 2012-06-05 21:13:40

15楼

[COLOR=blue]楼主仔细观察下L -10 到MD10和 L L# -10到MD10的区别,把结果用二进制表示,这样就能很容易看出负数是怎么表示的了。
你MOVE -10到MD10其实跟你MOVE -10到MW12是差不多的,因为-10是一个整形,而MD10是双整形(假如你未把MD10定义成DWORD),因此-10只能覆盖MD10的低字,即MW12,所以符号位只赋给了MW12,没有赋给MD10。
至于“Dword或者Dint怎么表示负数?”
DWORD是无符号数,是无法表示负数的,它的0~31这32个位都用来表示有效数值,因此它的表示范围0~4294967295,而DINT是有符号数,最高位(第31位)为符号位,它只有0~30这31个位是用来表示有效数值,因此它比DWORD少了一个最高位,其表示范围为-2147483648 ~ +2147483647。
另外,DWORD和DINT的表示示例如下:
L DW#16#FFFFFFFF
T MD10(把MD10定义为DWORD)

L L# -2147483648
T MD10(把MD10定义为DINT)
[/COLOR]
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54756条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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