美文网首页
3.定点浮点

3.定点浮点

作者: wit_yuan | 来源:发表于2019-04-17 21:03 被阅读0次

1.简介(几个公式)

在很多的dsp芯片上不含有浮点单元,所以,为了计算小数,就会必不可少的使用定点的概念。首先,要有一个概念,定点其实就是意淫一个小数点,来处理小数。

定点浮点的知识其实比较简单,其面对的问题主要是处理器芯片是否含有浮点处理单元区分,对于做嵌入式的人来说,大部分情况下用的定点就可以认为是整数,浮点就是小数。

但是,为了让没有浮点处理能力的芯片也能运算小数,一些人呢就找到了一个意淫的方法:在整数点里面找个小数的位置,也就称为定标。通俗点说,就是你认为哪个位置是小数点位置,哪个位置就是小数点。

有2种大家都认同的计小数点位置的方法,主要还是Q值法,所以只说Q值法。

比如一个16位的数,定标Q15,就表示小数位数为15,最高位为符号位。

举一个例子,一个16位数的最大最小值:
最大值是在Q0产生,值为:y=(2^{15}-1),故通用的最大值计算方法为:y=(2^{15}-1) * 2^{-Q},说通用是由于定标位置是可变的。

最小值也是在Q0中产生的,最小值为:y=-2^{15},所有通用的最小值公式为:y=-2^{15-Q}

这两个公式的精度可以用一个公式来表示:2^{-Q},其表达的意思就是小数点越多,精度越高。

下面考虑的就是定点浮点之间的转换了。

公式可以如下:
浮点转定点:y=x*2^{Q}
定点转浮点:y=x*2^{-Q}

估计,该公式对于做嵌入式的工程师来说,乍看确实如此,但是我们用一个实例做一下分析,例如一个小数0.6,使用Q15记法,转为定点值为:0.6*2^{15}=19660.8,使用向下取整,值为19660。接着反过来再算一下,使用19660*2^{-15}=0.5999755859,本来Q15的精度为2^{-15}=0.0000305175,而现在差值为:0.6-0.5999755859=0.000024414,对比向上取整,值则为19661,则浮点值为:19661*2^{-15}=0.600006103515625,差值为:
0.600006103515625-0.6=0.000006103515625,故而精度提高了很多。

因此,总结一点,浮点转定点的时候,需要修改公式:
浮点转定点:y=x*2^{Q}+0.5,然后再采取向下取整。

2.dsp处理定点的计算

在dsp中,有两个功能是必备的,一个是溢出保护,一个是乘累加在一个周期中完成。

3.参考资料

关于这节,其实有一本非常好的实用书籍:《语音信号处理及Blackfin DSP实现》。

相关文章

  • 3.定点浮点

    1.简介(几个公式) 在很多的dsp芯片上不含有浮点单元,所以,为了计算小数,就会必不可少的使用定点的概念。首先,...

  • 第一张出题 1

    下列关于浮点数与定点小数的利与弊说法错误的是__ A.浮点数表示数的范围比定点数表示数的范围小 .B.浮点数表示数...

  • SQL数据类型

    一、整数类型、浮点数类型和定点数类型 1、整数类型 2、浮点数类型和定点数类型 M表示:数据的总长度(不包括小数点...

  • 浮点数定点数

    基础知识 浮点数和定点数都是对于存在小数部分的数字一种表示方法 浮点数和定点数表示法的区别?根据国际标准IEEE ...

  • 浮点定点的存储

    比如单精度浮点数(32位),阶码8位,尾数那就是24位咯(尾数中内含一位符号位); 比如双精度浮点数(64位),阶...

  • MySQL 2.2 常见数据类型详解与DML操作

    一.前番回顾 1.MySQL数据类型 1) 整型: 2)定点数与浮点型: 定点数:DECIMAL(M,D) /...

  • (六)数据类型(列类型)

    1. 数值类型 a. 整型 ---------- b. 浮点型 ---------- c. 定点数 -------...

  • 数字

    在计算机中根据小数点位置是否固定,数字分为定点数和浮点数两种类型,整数属于定点数,它的小数点始终固定在最右边。浮点...

  • 浮点和精度、Tx.Origin 用作身份验证

    1. 浮点和精度 在撰写本文时(Solidity v0.4.24),Solidity 不支持定点或浮点数。这意味着...

  • 定点数和浮点数

    在计算机中的数据有定点数和浮点数两种表示方式。 1.定点数 小数点固定在某个位置上的数据 2.浮点数 小数点位置可...

网友评论

      本文标题:3.定点浮点

      本文链接:https://www.haomeiwen.com/subject/qveowqtx.html