0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

数据转换:十六进制与浮点数的互相转换

董生 来源:dongbolong 作者:dongbolong 2021-10-25 15:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

DSP上做数据处理遇到,浮点型存储格式,转换成十进制的浮点型参与运算。

最终通过用union与struct,问题解决了。对于这一类问题:位操作。其实每个平台的库代码里有现成的例子。那就是每个平台的库中都有寄存器的定义。就是用union与struct,即可解决。


typedef union { float f_val; struct { unsigned long datatail: 23; unsigned long exponent : 8; unsigned long sign : 1; } bits;} myfloat;

在处理函数中,做赋值即可:

val.bits.sign = data_sign; val.bits.exponent = data_exp; val.bits.datatail= data_tail; fReceive = val.f_val; //返回 fReceive 是float型 return fReceive;

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    559

    文章

    8219

    浏览量

    364054
  • 数据转换
    +关注

    关注

    0

    文章

    99

    浏览量

    18467
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用VScode的PIO开发GD32VF103,但是串口无法打印浮点数怎么解决?

    我最近在使用VScode的PIO开发GD32V,使用的是longan的模板,但是我将串口输出重定义到printf函数中,发现无法使用%f输出浮点数,想问问应该怎么配置,我看到的一种说法是在
    发表于 11-06 06:49

    点数表示实数的方法以及定点数在硬件上的运算验证

    ’b110_0000_0000_0000_0000_0000时,表示为十进制小数0.75( 2^(-1)+2^(-2) )。E是指数,为了能够表示负指数、IEEE754标准中规定浮点数的实际指数为E-127。从32位浮点数编码结
    发表于 10-28 08:13

    E203添加浮点数方法:译码和派遣模块设计

    数据来自于整数寄存器还是浮点数寄存器。 派遣模块与其他模块的连接方式如下图: 左图只选取了有代表性的信号展示出来,即只展示了源操作数和写寄存器的地址是如何在这些模块中传递的。右图是 dispatch
    发表于 10-24 13:54

    浮点指令(三)

    浮点数转化为 32 位二进制补码表示的整数,再写入 x[rd]中。由于浮点数表示范围远远大于整数,且浮点数存在一些特殊表示,比如无穷大和NaN等,下表是一些
    发表于 10-24 13:38

    E203添加浮点数方法:FPU控制逻辑

    fflags 寄存器的。 接下来讲解单精度浮点指令的实现方式。 首先是浮点数存取指令。笔者认为,单精度浮点数数据位宽与整数一样,指令机器码格式一致,因此将
    发表于 10-24 13:28

    浮点数是如何实现开平方运算的

    摘要: 本文主要描述浮点数是如何实现开平方运算的。 简介 事实上,浮点数的开平方运算结构与定点数甚至整数的开平方运算结构是十分相似的,我们可以在对定点数求平方根运算结构的基础上,针
    发表于 10-24 08:42

    risc-v中浮点运算单元的使用及其设计考虑

    器:用于执行浮点数的除法运算。 转换器:用于执行不同精度之间的类型转换浮点运算单元的使用需要在程序中调用相关的浮点指令,这些指令包括FL
    发表于 10-21 14:46

    大彩讲堂:VisualHMI-LUA教程-获取设置单精度浮点数函数的应用

    软件开发中各种协议对浮点数数据进行获取和赋值处理。get_float(vtype,addr)读取单精度浮点数(float)寄存器,返回有符号单精度浮点数·vtype:数
    的头像 发表于 10-16 00:00 1253次阅读
    大彩讲堂:VisualHMI-LUA教程-获取设置单精度<b class='flag-5'>浮点数</b>函数的应用

    CCG4十六进制文件格式是什么?

    你好,先生, 我可以知道 CCG4 十六进制文件格式吗? 2055 行是什么意思?
    发表于 05-15 07:22

    如何从cyclone-FX读取十六进制文件?

    读取十六进制文件的方法,但我无法做到。 如果您知道如何从 cyclone-FX 读取十六进制文件,请告诉我。
    发表于 04-01 07:42

    PRINTF函数无法打印出浮点数内容是为什么?

    1、MCXN947低功耗adc,历程中使用官方提供的PRINTF无法打印出浮点数内容。 2、同样在mcuxpresso ide 也不可以打印浮点数,这是为什么呢? 3、使用的历程是lpadc历程。
    发表于 03-20 08:06

    labview数据类型与PLC 数据类型之间的转换(来自于写入浮点数到汇川 PLC中的数据转换关键的修改)

    为32位无符号整型U32 2、将U32拆分为两个U16,分高低位写入PLC 3、在PLC中,将低位寄存器设置为浮点数数据类型 4、结果:PLC中一直无法正确转换。 原因及解决方法: 1、labview
    发表于 02-24 19:01

    西门子TIA Portal如何比较两个浮点数相等

    概述: 由于浮点数的定义规则,导致浮点数不能通过二进制精确表示,所以在浮点数计算过程中,会出现两个值一样的浮点数进行比较相等计算时结果并不相
    的头像 发表于 01-06 10:07 1191次阅读
    西门子TIA Portal如何比较两个<b class='flag-5'>浮点数</b>相等

    使用ADS8691的SPI取得数据后,发现数据无法转换为正确的电压值怎么解决?

    你好,在使用ADS8691的SPI取得数据后,发现数据无法转换为正确的电压值 比如取到HEX格式数据为 00 02 3D 15 然后我的计算方法如下:
    发表于 12-17 06:34

    ADS1282采集到的数据传到PC上应该怎么转为浮点数

    我最近在用ADS1282,采集到的数据传到PC上应该怎么转为浮点数?比如说通过串口调试助手收到一个采样点的数据为 FF FF 9D 17,它的真实浮点数是多少呢?我知道ADC是以补码
    发表于 12-13 06:23