程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

嵌入式中浮点运算小技巧(嵌入式代码讲解)

balukai 2025-07-23 13:07:45 文章精选 5 ℃

在嵌入式开发中,我们经常需要对浮点数进行计算。相对于定点数,浮点运算需要的资源更多,在嵌入式系统中,有限的资源有时候不足以支持大量的浮点运算。因此,在实际项目应用中我们经常会采用把浮点数转为定点数的方法,虽然会牺牲些精度,但是可以节省资源,提高运算效率。

那么如何把浮点数转为定点数运算?

首先我们先简单的了解下定点的表示形式:Q(m,n)。m:整数部分位数;n:小数部分位数。如Q(1,9)表示1位整数和9位小数,总共10位。

我们会通过缩放取整法将浮点数转为定点数。实际操作就是将浮点数放大2的j次方后进行运算,即左移j位后取整。为了降低取截取误差,可以在取整前先加0.5。

value = (int32_t)((float_value << n) + 0.5);

实际应用中,根据所需精度要求来选取j。

举个简单示例:a = 3pi/4; b = 1.732;求c=a+b。

直接浮点计算。c≈4.088。

通过浮点转定点计算,b的小数为3位,j可以取3,先把a和b均左移3位,那么((int32_t)((a<<3)+0.5)+(int32_t)((b<<3)+0.5))=4088。最后再把结果再右移3位,得到4.088。运算结果一致。

最近发表
标签列表