网站首页 > 文章精选 正文
在嵌入式开发中,我们经常需要对浮点数进行计算。相对于定点数,浮点运算需要的资源更多,在嵌入式系统中,有限的资源有时候不足以支持大量的浮点运算。因此,在实际项目应用中我们经常会采用把浮点数转为定点数的方法,虽然会牺牲些精度,但是可以节省资源,提高运算效率。
那么如何把浮点数转为定点数运算?
首先我们先简单的了解下定点的表示形式: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。运算结果一致。
猜你喜欢
- 2025-07-23 第六章:DataFrame 的数据运算与分组操作
- 2025-07-23 工程计算软件Mathcad技巧集锦(工程数学计算器)
- 2025-07-23 LLM量化背后的概念、方法、应用和原理
- 2025-07-23 浮点类型和定点类型(浮点和定点有什么组成)
- 2025-07-23 一文读懂pytorch基础语法(pytorch详解)
- 2025-07-23 js数字(Number)方法汇总(js number string)
- 2025-07-23 现场|伦敦放题展:挑战感官的盛夏之展
- 2025-07-23 C# 基础-数据类型(简述c#的数据类型)
- 2025-07-23 java中浮点类型double、float,它们之间有什么不一样?
- 2025-07-23 长沙0基础学前端培训教程:float的表示范围为什么比long大
- 07-23第六章:DataFrame 的数据运算与分组操作
- 07-23嵌入式中浮点运算小技巧(嵌入式代码讲解)
- 07-23工程计算软件Mathcad技巧集锦(工程数学计算器)
- 07-23LLM量化背后的概念、方法、应用和原理
- 07-23浮点类型和定点类型(浮点和定点有什么组成)
- 07-23一文读懂pytorch基础语法(pytorch详解)
- 07-23js数字(Number)方法汇总(js number string)
- 07-23现场|伦敦放题展:挑战感官的盛夏之展
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)
- fmt.println (52)