回复:我觉得这两个教程讲得不对,浮点数的高低字节转换不能这样吧?

已锁定

昔日如诗

  • 帖子

    826
  • 精华

    3
  • 被关注

    10

论坛等级:侠圣

注册时间:2018-04-17

钻石 钻石 如何晋级?

发布于 2023-06-16 14:36:02

4楼

展开查看
以下是引用宝冬在2023-06-16 12:00:16的发言 >2楼

DWORD是二进制类型,和整数类型是两回事。


数据三大类:二进制类,整数类,浮点数类。每类里面细分。

Bool只是二级制类中的一种,还有BYTE、WORD、DWORD、LWORD,都是二进制。

整数类是指:SINT、USINT、INT、UINT、DINT、UDINT、LINT、ULINT。

二进制可以被理解为存储空间的基础格式。至于整数和浮点数,那只是把存储空间基础格式中的bit串,解释为不同表意数据的不同协议,或者叫编码。



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


至于大小端嘛


ABCD是字面形式。它的语义需要按照表达的次序,也就是按照书写和阅读次序的不同,进行不同的解释。    

不同的语言,左右起始次序不同。例如:英语是从左往右书写阅读,阿拉伯语是从右往左书写阅读。    

大多数语言是从左往右,主导世界规则。所以定义了最左侧的符号bit是msb,最右侧的符号bit是lsb。如果阿拉伯人统治世界,可能msb就定义在右边了。   

存储是以byte为单元,总是从低字节向高字节存储。先表达的信息存在低字节,是非常自然的一致性。 所以不同左右起始次序的语言的存储格式,也像书面的差别一样,形成了两种不同形式。

大端:先存A(msb),后存D(lsb)。(从上面截图可以看出,西门子是大端)    

小端:先存D(lsb),后存A(msb)。    

所以大小端的差异,最初是由于人类不同语言的表达方式的天然差异造成的,并非根源于计算机本身。    


至于ABCD、CDBA、BADC、DCBA,和大小端又不一样了。


IEEE754的计算应该掌握,否则监视底层的时候,吃不准就含糊了。


所有关于数据类型和编码的问题,还是得回到二级制底层,才能确认无误。就像回车换行(CRLF)这么简单的ASCII编码,在windows和Linux中就有区别。


    原来是这样。

    我此前看1200手册,以为Dword只能存整数,刚刚重看手册,发现它还可以存二进制、十六进制,但是我此前我以为后者依然是整数的不同写法,这次我想,它们可能是代表任何数据类型吧!

    一个Dword存储区里有1011 0110.....这样的数,如果定义为整数,PLC就会解释成56236这样的数字,如果定义为实数,就会解释成1000.5这样的,二者根本不相等。把一个Dword里的bit定义为什么数据类型,确实是协议

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15228条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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