BCD码转换成整数,视频讲解员强制赋值 IW0 为2#1001 0001 0001 0000 , 左边显示是-28400 , 这是二进制原码2#1001 0001 0001 0000 转换成有符号整数就是-28400 ,也可以说是二进制原码的有符号整数显示格式是-28400?? 这已经是BCD码转换成整数-28400了,我这样理解不对吧??? 再说VW200应该存放整数, BCD转换成整数嘛, 而VW200显示的是9110 , 这个9110是整数??? 不就是对着BCD码表来的吗,1001(对应9) 0001(对应1) 0000(对应0) 所以也就是9110,这也没有转换啊,就是对表啊。
我的疑问是:这个指令是具体详细转换的, IW0 2#1001 0001 0001 0000 是如何转换成整数的,为什么左边显示是二进制码转换成有符号整数-28400,二进制如何转换成 有符号整数-28400我知道,但是为什么显示左边 -28400 。 VW200是如何得到的,9110是整数? 这个指令在实际工作中的例子有哪些? 在哪里有没有比较基础详细的讲解材料?
图片说明:
最佳答案
1、先解释 IW0 为2#1001 0001 0001 0000,左边为什么显示是 -28400;
这个16位的二进制码的最左边的位是它的最高位,如果将这串码看成无符号整数,则最高位为符号位;
当此位为 0 时表示此数是正数,而当此位为 1 时表示此数是一个负数,负数在PLC系统中都是用补码来表示的的;
正整数,直接用二进制和种位乘以位权并相加换算就可以得到其真实的值。
负整数是用补码表示的,其表示的负整数的大小要用下面的方法换算才能得到:
A 先将 IW0 2#1001 0001 0001 0000 按位取反
B 按位取反的结果 +1
C 将得到的二进制码的各位*其位权并相加得到一个十进制数
D 将得到的十进制数的最前面加上负号;
以 2#1001 0001 0001 0000 为例
A 取反
得 2#0110 1110 1110 1111
B 加 1
得 2#0110 1110 1111 0000
C 将上一行的二进制码转换成十进制,则为 28400;
D 加上负号则为 -28400;
2、
BCD 码没有符号位的概念,是每四位二进制码表示一个BCD码,而且对每四位二进制码的取值范围也有要求,范围就是 0000 到1001,即十进制的 0-9。
转换就和 WWCWWC大侠说的方法一样,在此不多解释。
3、在S7-200中,字节、字、双字都可以按照无符号、有符号整数来查看,也可以用二进制、十六进制查看,用状态表比较方便。
4、参考资料
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/s7-200/programming/basic/data_format.htm
5、请加强一下数制方面的知识,网上资料很多,动手转换一下,加深理解。
提问者对于答案的评价:
OK ,谢谢啦,我先从比较基础的看起
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc361646.html