【C编程问题集中营】在不同编译器下float强转为无符号int的表现

【C编程问题集中营】在不同编译器下float强转为无符号int的表现

在这里插入图片描述
关注且发送"101"即可获取完整全文内容;
在这里插入图片描述

一、问题背景

两个ECU之间通过某种通信方式按照某种协议进行交互时,如果需要发送的数据是单精度浮点类型的负数,一般我们会通过以下两种方式对数据进行处理然后发送:

  1. 发送端在原数据的基础上加上固定的offset正值,使之转化为单精度浮点类型的正数后,强转为无符号整型进行发送,然后接收端将数据强转为单精度浮点类型后减去固定的offset正值就基本得到一定精度的数据了。(暂不考虑小数点后的精度)
  2. 发送端将原数据也就是单精度浮点类型的负数通过一定的强转手段直接转换成无符号整型,然后进行发送,接收端接收到这个无符号整型数据后先强转为有符号整型再转换为单精度浮点类型,即可得到一定精度的原始数据了。(暂不考虑小数点后的精度)

上述第一种方法只要是offset设置的合理理论上不存在什么问题,本文主要描述的问题主要是出现在第二种方法;

当采用第二种方法进行有符号类型数据的传输时,单精度浮点类型的数据在直接强转为无符号整型时,不同编译器下的表现是不同的,下面分别用gcc以及ghs编译器进行测试;

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩如烟海·灿若星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值