...高位数18007(int),低位数40960(int)。如何换算成13800(float)(单位...
发布网友
发布时间:18小时前
我来回答
共1个回答
热心网友
时间:10小时前
18007转换为16进制就是4657 40960转换为16进制就是A000,因此高低字合起来的16进制浮点数表达就是4657A000
然后依据下面的算法得到:
HexToFloat
STEP1:将双字的23~30位从双字中分离
与H7F800000做与操作
然后将结果右移23位
STEP2:将STEP1的结果减去127保存到A中
STEP3:将0~22位数据进行分离
与H7FFFFF进行与操作
构建循环:计算小数点后的数值
FOR I:= 0 TO 22 BY 1 DO
POWVALUE:=23-I;
RESULT:=RESULT+1/(2的POWVALUE次方)
END_IF;
结果保存为B
STEP4:(1+B)A的次方 结果保存为C
STEP5:将最高位符号位分离
与H80000000做与操作
结果与H80000000比较,如果不相等,那么C与
H80000000做或操作。