labview编程技巧---定点数转换
扫描二维码
随时随地手机看文章
接收到一串PCM数据,如下:
0000 1264 C97C 8937 77C8 3783 EE9B 0000
说明两个字节对应一个点的数据(高低位互换后,如:1264(存储时的样子),实际数值为:6412(16进制),他们对应的10进制浮点数如下:
00.7818314824520.97492791219320.4338837391869-0.4338837390251-0.9749279121533-0.781831482564-1.79586368671E-10
问题:
例如: C877 (16进制) =-0.4338837390251 (10进制) 如何计算?如何判断这是个负数?
如何判断一个16进制数是正,还是负?(下面是16进制数和对应的10进制数)
0000 6412 7CC9 3789
0 0.781831482452 0.9749279121932 0.4338837391869
***************************************************************************************
C877 8337 9BEE 0000
-0.4338837390251 -0.9749279121533 -0.781831482564 -1.79586368671E-10
如何只知道一个2字节的16进制数,判断出这是个的正负?(知道它对应的带符号的浮点数?如:
知道" C877(16进制) ",如何判断出这是个的正负?得到 " -0.4338837390251 "?
****************************************************************************************************************************************
分析:
IEEE标准规定,双精度浮点数为8个字节,单精度浮点数是4个字节,所以两个字节长度肯定不是浮点数,LABVIEW中的浮点数数据类型是完全符合IEEE标准的。上述问题实际是定点数而不是浮点数。
定点数小数点的位置和位数可以通过对话框配置,针对上述问题,配置如下: