DSP算法优化之除法优化

该博客探讨了在DSP系统中优化除法运算的方法,特别是针对不需要高精度的情况。通过理解32位单精度浮点数(FLOAT)的内存结构,作者介绍了使用查找表计算倒数的策略,从而加速除法过程。博客提供了几个示例程序,展示如何利用查找表和浮点数的内部表示来减少计算复杂性。
摘要由CSDN通过智能技术生成

关于DSP除法运算,如果不需要特别高的精度,可以采用查找表的方式,优化除法运算。下面我们就研究一下如何采用查找表的方式加速除法运算。我们以32位单精度float类型除法为例来讲解。

FLOAT的内存结构格式

float一共32位,其结构定义如下:

|-------- 31 -------|------------ 30-23------------ |------------ 22-0 ------------|

 符号位(sign)       指数部分(exp)          小数部分(mag)

sign:符号位就一位,0表示正数,1表示负数

exp: 指数部分,无符号正数

mag:小数部分,定点小数,小数点在最左边,表示范围:0 ≤ mag< 1。

float的表达式 :  pow(-1, sign) * (1 + mag) * pow(2, exp - 127)

 

示例程序1

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

intmain(int argc,char*argv[])

{

   float f;

   int i;

   int sign;

   int exp;

   int mag;

   float d_mag;

   float f2;

 

   f = 1.23;

   //f = -0.12;

   i = *(int*)&f;

   sign = (i >> 31) & 0x01;

   exp = (i >> 23) & 0xFF;

   mag = i & 0x7FFFFF;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值