签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
我用网上教的vd取vw值的办法,为什么会出现一个特别大的数呢?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1743745&b_id=64&s_id=0&num=17
既然是程序问题,先把你的需求说清楚。
如果你不懂整数的各个位定义,那就直接用软件内部的数据转换指令。
而不是直接把负数给6002而不用处理6000~6001的位,然后就认为6000~6003是你想要的32位整数了。
实践是检验真理的唯一标准,说明你要干什么,然后告诉你怎么做。
你是要补码还是要把vw的符号位也转换成数字?
要不取个绝对值再判断正负!
高低位没有转换。。
数值的类型不同,可定得到的结果不一样的。你要把整数,双整数,浮点数整明白。
谢谢分享。。学习了。。
进来学习一下,
ABS取绝对值
用0减负数就是正数吧.
vd取vw是什么意思?
指令错了,负值的符号位变成数值位,导致数值变大。负数转正数,与0比较,小于0就0减。
负数转正数:先判断是否是负数,是则*-1. 就变成正数。
VW2---VW4
VW6002是VD6000的高16位,低16位补零,所以变大了
有没有可能是说反了
VB6000 和 VB6001 是 VD6000 的高16位
看图
VW6002 = -30639,转16进制是 0x8851
VD6000 = 1318946897,转16进制是 0x4E9D8851
显然是 VB6000 和 VB6001 没清零
引用15楼详细内容:
是的,说反了,既然VB6000和VB6001没用过,为啥不是零呢,楼主是否可以换个V区再试试,或者在第一个扫描周期给VW6000置个零呢
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录