浮点数进行高16位和低16位转换时,会不会导致错乱?

已锁定

昔日如诗

  • 帖子

    826
  • 精华

    3
  • 被关注

    10

论坛等级:侠圣

注册时间:2018-04-17

白金 白金 如何晋级?

浮点数进行高16位和低16位转换时,会不会导致错乱?

3255

4

2023-06-14 09:26:48

    客户器件里的数据排列是CDAB类型的,而西门子PLC的数据排列是ABCD,因此得把客户的数据进行高位和低位转换,假设客户的数值是1000.1,在西门子PLC里转换后也许得到正确的数值;可是客户的数值是10.0001,转换后还能得到正确的数值吗?

--------------------------------------------

    怕误人子弟,我更正一下:

    浮点数有像点像串行信号,每个位都有不同的含义。

    根据IEEE754标准,浮点数占32个位,第1位是表示正负,第2-9是表示小点数有几位,从第10位开始才是数值本身

    情况就成了:第1位至第9位占了第一个寄存器和第二寄存器的第1位,从第二个寄存器的第2位开始才表示数值本身(当然还有其它的规定,这里不表述。想知道详情的请去百度)

    这就是浮点数的格式。用右移SHR指令时,此指令只能移位整数,而整数格式与前述IEEE754的不一样,如果让SHR移位整数,它会用隐形变量先把实数转换成整数,再移位16位。这就丢掉了IEEE754对浮点数的格式限制,发送出去后也不会是原来的数字。

    所以,用SHR指令是未毕对的。当然网上有人写文章用这个指令,但是不可全听他们的。

    我的例题中的浮点数又是非常小的,是0.005,是一个脉冲对应的实际行程,不好取整,只能做高低字节转换,目前还找不到可靠的方法。

浮点数进行高16位和低16位转换时,会不会导致错乱? 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15377条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。