请高手指教,我看了s7-200跟我学视频第81集,IW0 BCD 2# 1001_0001_ 0001_ 0000 转为整数VW200 9110,这看得懂。但是强制后,为什么程序块里IW0 标为-28400,这是个什么数,怎么来的?请大侠们不吝赐教,谢谢!
最佳答案
这个问题,我现在搞明白了:数据的定义
整数(INT)
整数数据类型长度为16位,数据格式为带符号十进制数,16位中最高为符号位。正整数是以原码格式进行存储的,如+786,对应的二进制码为2#0000_0011_0001_0010,而负整数则表示为正整数的二进制补码,即对应正整数的二进制码取反后加1,例如负整数-786,对应的二进制码为2#1111_1100_1110_1110。将负零(1000_0000_0000_0000)定义为-32768因此取值范围为-32768~32767。0表示正,1表示负。
这里2# 1001_0001_ 0001_ 0000 这个数据在PLC地存储是2进制的格式,第一位为符号位,那么这个数就是个负数,根据上面的定义,除符号位的其他位取反得到110-1110-1110-1111,取反后得到的这个二进制数的十进制值为28399 ,再根据定义加上1就得到了28400,因为符号位是1,所以是-28400
提问者对于答案的评价:
非常感谢您!我计算了就是这个答案。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc212879.html