浮点数100.56在内存中是怎样存放的。我想用PLC的编程软件监视看看
问题补充:
如。我放入VD10中100.5645.然后我查看vb0,66
VB1 -55
VB2 +33
VB3 +7
这都是有符号数,好像与100.5645也不挨边啊
我用二进制看了VD0,现实的数据和100.5645也对不上啊。
最佳答案
在状态图里用二进制方式看看
这里的浮点数是32位的,不能把字节分开看,每位的意义如下:
s (第31位)
e (第30位---23位)
f (第22位-0位)
浮点=(-1)S×1.f×2e-127 (s =0,1 0≤e≤255 f<1)
7.62=2#0100-0000-1111-0011-1101-0111-0000-1010
-967.14=2#1100-0100-0111-0001-1100-1000-1111-0110
实数到二进制数
7.62=(-1)0×1.905×22 → s=0 f=0.905 e=129=2#100-0000-1
-967.14=(-1)1×1.8889453×29 →s=1 f=0.8889453 e=136=2#100-0100-0
② 0.905=2#0.111-0011-1101-0111-0000-1010-0
0.8889453=2#0.111-0001-1100-1000-1111-0101-1
通过“乘2取整”法求二进制,取小数点后23位,若第24位为1,则进1。
0.905→1.81→1.62→1.24→0.48→0.96→1.92→1.84→1.68→1.36→0.72→1.44→0.88
→1.76→1.52→1.04→0.08→0.16→0.32→0.64→1.28→0.56→1.12→0.24→0.48
二进制数到实数
①取二进制的第31位,s1=0 s2=1
②取二进制的第23到30位,e1=2#1000-0001=129 e2=2#1000-1000=136
③取二进制的第0到22位,
f1=2-1+2-2+2-3+2-6+2-7+2-8+2-9+2-11+2-13+2-14+2-15+2-20+2-22=0.90499997138
f2=2-1+2-2+2-3+2-7+2-8+2-9+2-12+2-16+2-17+2-18+2-19+2-21+2-22=0.8889453
代入公式即得实数。
提问者对于答案的评价:
好。但是我没理解呢。我得在仔细看看。谢谢喽。咋没上QQ呢
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc354354.html