发布于 2006-08-15 11:26:48
0楼
受教,不过不明白,为什么不会丢失符号位?..
======================================
要说到为什么不会丢失符号位?也简单,也复杂!
首先,我们要弄清楚PLC是如何存储单整和双整的.在PLC中,单整占用一个字的空间来存储.其中第零至第14位为数值,第15位为符号位."0"为正整数,"1"为负整数.值得注意的是,负数是以二进制补码存储的,即将二进制各位取反在加1;双整的存储道理与单整相似,只不过符号位变成第31位.
在双整中取单整时,我们有必要记住shine斑着重注释的"只要MD0的值在-32768~32767之间",也就是说,在这个MD0中,我们只使用了0-14位.如果这个数是正数,则15以后均为0,这时,读MW2刚好取到的是0-15位,不正好是单正整数吗?如果这个数是负数,则15以后均应为1(补码啊),取出0-15位后,那么第15位为"1",表示是负数,而0-14位为补码,一还原,不就是一个负的单整吗?如果还不明白,请看例子:
L#15存储在MD0中的二进制表示:
2#0000_0000_0000_0000_0000_0000_0000_1111
L#-15存储在MD0中的二进制表示(补码):
2#1111_1111_1111_1111_1111_1111_1111_0001
MD0存L#15时,MW2的二进制表示:
2#0000_0000_0000_1111
MD0存L#-15时,MW2的二进制表示(是补码):
2#1111_1111_1111_0001
好好生活,天天向上!