BCD码转换成整数指令 请教大神,我又来提问了

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是整数? 这个指令在实际工作中的例子有哪些?    在哪里有没有比较基础详细的讲解材料?

图片说明:

BCD码转换成整数指令    请教大神,我又来提问了   

最佳答案

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午11:59
下一篇 2021年7月5日 上午11:59

相关推荐

发表回复

登录后才能评论