【随写笔记】定点数和浮点数

对于标准C来说,是没有定点数这个概念的。(定点数来源于dsp?)但对于ARM架构的处理器来说,编译器提供浮点运算的软件实现,FPU提供硬件实现。

 

浮点数的格式:

单精度浮点:[31] 1位符号 [30-23]8位指数 [22-00]23位小数

单精度浮点数的指数偏移度位127,举个例子

 

 

1.01*2^(124-127)=1.01 *2^(-3) = 0.00101 = 0.125+0.03125 = 0.15625 1.5625

 

 

 

浮点数的优点:

动态范围大(20*log(max/min)),不用经常考虑乘法或累加的溢出。

精度高。

在做大型FFT的时候,浮点数十分有用

浮点数不能使用==来比较相等

 

 

定点数Q15,Q31

Qm.n 表示一个占用 (m+n) 比特的Q型定点数。

 

简单地理解就是 Qm.n 能够告诉 DSP 库这个整数和实际数值之间的比值:2 的 n 次方。如果 m=1 可以简写为 Qn,比如 Q1.15 可以简写为 Q15,但是它占用的还是 16bits,也就是2字节。因此,很多地方采用 (signed) short 来表示 Q15,因为只需要除以一个常数(见下文),就可以得到对应的浮点数了,超方便。

在 CMSIS-DSP 常用的是 Q15,Q31等等,分别表示除以 32768,除以 2147483648 就可以得到实际的浮点数。反之,一个浮点数乘以这个倍数,然后取整,就可以得到 Q15、Q31格式的表示。

你可能感兴趣的:(随写笔记)