matengfei
攻人之过勿太严,要思其堪受;教人以善勿过高,要令其可从。
级别: 论坛先锋
精华主题: 0
发帖数量: 736 个
工控威望: 1054 点
下载积分: 2482 分
在线时间: 207(小时)
注册时间: 2011-08-07
最后登录: 2017-06-10
查看matengfei的 主题 / 回贴
楼主  发表于: 2012-08-27 16:18
把D0里的数据255进行取反之后怎么会是-256,而不是-65280。把D0以十六位二进制展开前八位是1,后八位是0,取反后前八位是1,后八位是0。这样把后八位的数值加起来是65280,又最高位是符号位所以为-65280。不知哪里错了,求高手指教。
cvlsam
富士低压,POD(觸摸屏),PLC专卖
级别: VIP会员

精华主题: 3 篇
发帖数量: 6798 个
工控威望: 38402 点
下载积分: 8643 分
在线时间: 9641(小时)
注册时间: 2006-09-13
最后登录: 2025-04-23
查看cvlsam的 主题 / 回贴
1楼  发表于: 2012-08-27 17:49
255的二进制表示方法为:0000 0000 1111 1111
执行了CML后,其值为 1111 1111 0000 0000

256的二进制表示方法为:0000 0001 0000 0000
负数,在PC中表示为其正数的补码,也就是反码+1
256的反码为:1111 1110 1111 1111
那么补码就是反码+1,也就是1111 1111 0000 0000。

16位符号数据能表示的值域为-32768~+32767,那又怎么可能表达为-65280呢?

Good Luck~