首页 > 其他分享 >和利时MACSV6.5.3中4byte数据合并转换为单精度浮点数float

和利时MACSV6.5.3中4byte数据合并转换为单精度浮点数float

时间:2023-06-17 12:11:44浏览次数:54  
标签:float 单精度 浮点数 MACSV6.5 利时 4byte

和利时MACSV6.5.3中4byte数据合并转换为单精度浮点数float

代码截图

验证

完整可导入代码

复制到记事本中,保存为xml文件,在和利时M6 AutoThink中导入

<?xml version="1.0" encoding="ISO-8859-1"?>
<pou>
	<path><![CDATA[USER]]></path>
	<name>IEEE754</name>
	<secondName></secondName>
	<description>4Byte数据转换为单精度浮点数</description>
	<flags>2048</flags>
	<auto-sort>0</auto-sort>
	<exporttime>2023-06-17 11:40:43</exporttime>
	<amendtime>2023-06-17 11:38:00</amendtime>
	<downloadtime></downloadtime>
	<modifier>AAAA</modifier>
	<PouPaperSize>A4</PouPaperSize>
	<PouPrintType>1</PouPrintType>
	<PouExcuteOrder>0</PouExcuteOrder>
	<interface>
<![CDATA[FUNCTION IEEE754 : REAL
VAR
		S1(2112): INT := 0;
		E1(2112): INT := 0;
		F1(2112): DWORD := 0;
END_VAR
VAR_INPUT
		IB0(2113): BYTE := 0;
		IB1(2113): BYTE := 0;
		IB2(2113): BYTE := 0;
		IB3(2113): BYTE := 0;
END_VAR
VAR_IN_OUT
END_VAR]]>
	</interface>
	<st>
		<body>
<![CDATA[(*
2023年6月17日 11:36 周六

注意:当4个byte数据均为0时,输出是一个非常小的数值,而不是0
原因在与     EXPT(2, INT_TO_REAL(E1 - 127))  不为0,该问题暂未解决

*)

(*--------数据位传输--------*);
F1 := PUTBIT(F1, 0, EXTRACT(IB0,0));
F1 := PUTBIT(F1, 1, EXTRACT(IB0,1));
F1 := PUTBIT(F1, 2, EXTRACT(IB0,2));
F1 := PUTBIT(F1, 3, EXTRACT(IB0,3));
F1 := PUTBIT(F1, 4, EXTRACT(IB0,4));
F1 := PUTBIT(F1, 5, EXTRACT(IB0,5));
F1 := PUTBIT(F1, 6, EXTRACT(IB0,6));
F1 := PUTBIT(F1, 7, EXTRACT(IB0,7));

F1 := PUTBIT(F1, 8, EXTRACT(IB1,0));
F1 := PUTBIT(F1, 9, EXTRACT(IB1,1));
F1 := PUTBIT(F1, 10, EXTRACT(IB1,2));
F1 := PUTBIT(F1, 11, EXTRACT(IB1,3));
F1 := PUTBIT(F1, 12, EXTRACT(IB1,4));
F1 := PUTBIT(F1, 13, EXTRACT(IB1,5));
F1 := PUTBIT(F1, 14, EXTRACT(IB1,6));
F1 := PUTBIT(F1, 15, EXTRACT(IB1,7));

F1 := PUTBIT(F1, 16, EXTRACT(IB2,0));
F1 := PUTBIT(F1, 17, EXTRACT(IB2,1));
F1 := PUTBIT(F1, 18, EXTRACT(IB2,2));
F1 := PUTBIT(F1, 19, EXTRACT(IB2,3));
F1 := PUTBIT(F1, 20, EXTRACT(IB2,4));
F1 := PUTBIT(F1, 21, EXTRACT(IB2,5));
F1 := PUTBIT(F1, 22, EXTRACT(IB2,6));

(*--------指数位传输--------*)
E1 := PUTBIT(E1, 0, EXTRACT(IB2,7));
E1 := PUTBIT(E1, 1, EXTRACT(IB3,0));
E1 := PUTBIT(E1, 2, EXTRACT(IB3,1));
E1 := PUTBIT(E1, 3, EXTRACT(IB3,2));
E1 := PUTBIT(E1, 4, EXTRACT(IB3,3));
E1 := PUTBIT(E1, 5, EXTRACT(IB3,4));
E1 := PUTBIT(E1, 6, EXTRACT(IB3,5));
E1 := PUTBIT(E1, 7, EXTRACT(IB3,6));

(*--------符号位传输--------*)
S1 := PUTBIT(S1, 0, EXTRACT(IB3,7));


IEEE754 := EXPT(-1, INT_TO_REAL(S1)) * EXPT(2, INT_TO_REAL(E1 - 127)) * ( DWORD_TO_REAL(F1) * (EXPT(2, -23)) + 1);]]>
		</body>
	</st>
</pou>

标签:float,单精度,浮点数,MACSV6.5,利时,4byte
From: https://www.cnblogs.com/guyk/p/17487307.html

相关文章

  • 时隔多年,从新认识浮动float
    开场白随着css的发展,在加上各种优秀ui库的兴起。我们在项目中浮动用的很少。但并不意味着我们不使用浮动了。曾几何时,浮动这个属性是那个遥远时代的'超级明星'排版,布局,都需要使用他。今不如昔:现在没落了。他的这几个属性还记得吗?1.包裹性2.浮动的自适应性3.float会改变di......
  • ios NSString format 保留小数点 float double
     iosNSStringformat保留小数点floatdouble self.orderCost.text=[NSStringstringWithFormat:@"%.1f元",self.order.cost.floatValue];%.1f 表示小数点一位,%.2f表示小数点2位,依次类推.格式定义TheformatspecifierssupportedbytheNSStringformattingmethodsa......
  • Looksery Cup 2015-H. Degenerate Matrix(浮点数二分)
    原题链接H.DegenerateMatrixtimelimitpertestmemorylimitpertestinputoutputdeterminant ofamatrix 2 × 2degeneratenorm ||A|| ofamatrix AYouaregivenamatrix .Consideranydegeneratemat......
  • c#中十六进制字符串转单精度浮点数
    1varcountBytes=newbyte[]{66,12,25,217};2varcountHexStr=ToHexStrFromByte(countBytes.ToArray());3uintnum=uint.Parse(countHexStr,System.Globalization.NumberStyles.AllowHexSpecifier);4byte[]floatVals......
  • 浮点数转字符串
    浮点数转字符串usingUnityEngine;publicclassJuse:MonoBehaviour{floata=2;floatb=6666.6666f;voidStart(){Debug.Log(a.ToString("#00"));//输出:02Debug.Log(a.ToString("#00.00"));//输出:02.00......
  • upc 8378: Floating-Point Numbers(模拟浮点数运算)
    8378:Floating-PointNumbers时间限制:1Sec  内存限制:128MB提交:10  解决:4[提交][状态][讨论版][命题人:admin]题目描述Inthisproblem,weconsiderfloating-pointnumberformats,datarepresentationformatstoapproximaterealnumbersoncomputers.S......
  • 驱动开发:内核读写内存浮点数
    如前所述,在前几章内容中笔者简单介绍了内存读写的基本实现方式,这其中包括了CR3切换读写,MDL映射读写,内存拷贝读写,本章将在如前所述的读写函数进一步封装,并以此来实现驱动读写内存浮点数的目的。内存浮点数的读写依赖于读写内存字节的实现,因为浮点数本质上也可以看作是一个字节集,对......
  • 什么是浮点数加减运算里的对阶,阶码和尾数
    在浮点数加减运算中,对阶是一种重要的步骤,它用于将参与运算的浮点数调整为同一数量级,以便进行精确的计算。对阶涉及到阶码和尾数的概念。在本文中,我将解释这些概念并提供具体的例子,以便更好地理解。首先,浮点数表示法是一种用于表示实数的方法,其中数值被分为阶码和尾数两部分。通常......
  • python3-float
    1、介绍builtins.py文件中定义了float类,用于处理python中浮点数数据。float也是python的基本数据类型之一。2、类和初始化classfloat(object):def__init__(self,*args,**kwargs):pass3、初始化(1)字面量初始化支持十进制和科学计数法#十进制赋值a=3......
  • 浮点数在内存中的存储规则
    我们知道,整型在内存中的存储比较简单,在内存中都是以二进制来存储的。然而,浮点型在内存中的存储较为复杂。下面来详细探讨:直接举一个例子:intmain(){intn=9;float*pFloat=(float*)&n;printf("n的值为:%d\n",n);printf("*pFloat的值为:%f\n",*pFloat);*pFloat=9.0;pri......