打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PLC中给INT型变量所有位置1,原来还需要这样的知识

PLC中INT型数据的存储形式

今天早上同事问我,想让PLC中一个INT型变量所有位均为1,用十进制应该赋哪个值?

看似一个简单的问题,且涉及到了INT型数据的存储形式。

熟悉PLC的朋友应该知道,INT型数据在PLC中占用两个字节,16位,以最高为表示符号,最高位为0表示正数,最高位为1表示负数。

要说清楚INT型数据的存储形式,还得从他的二进制源码、反码、补码说起。

  • 源码:最高位表示符号,其它位表示数值。
  • 反码:正数的反码和源码相同,负数的反码是除符号位外其它的位按位取反。
  • 补码:正数的补码和源码相同,负数的补码是其反码加1。

INT型数据是以补码形式存储的,所以要想让PLC中一个INT型变量所有位均为1,这个值必须是负数,因为只有负数才能使得最高位为1。

将取值范围缩小的负数之后,可供我们选择的负数只有两个,即INT型可表示的最小负数-32768和最大负数-1。经计算,INT型变量值为-1时,用二进制表示的16位数均为1。

理论分析到此为止,接下来我们在PLC中验证一下。

首先,在PLC中创建两个INT型变量A_TEST1和A_TEST2。

然后在程序中配置这样的程序,将A_TEST1的值赋给A_TEST2。

这样做是为了测试方便,也可省略这一步,不过测试时有的繁琐。

在数据表中监视变量A_TEST1和A_TEST2,并将A_TEST1以十进制显示,A_TEST2以二进制显示。

将A_TEST1的值修改为-32768,A_TEST2的值变为1000 0000 0000 0000。

将A_TEST1的值修改为-1,A_TEST2的值变为1111 1111 1111 1111,证明理论分析是正确的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C/C 基础入门——源码、反码、补码
程序中数值的表示方法
原码、反码、补码、移码
进制转换和变量解释
单片机相关知识
计算机原码,反码与补码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服