关于Q格式数据总结
来源:互联网 发布:python黑帽子中文 pdf 编辑:程序博客网 时间:2024/06/18 02:28
例如Q15表示小数部分有15位,一个short 型数据,占2个字节,最高位是符号位,后面 15位是小数位,就假设小数点在第 15位左边,表示的范围是: -1<X<0.9999695 。浮点数据转化为 Q15,将数据乘以2^15;Q15数据转化为浮点数据,将数据除以 2^15
例如:假设数据存储空间为 2个字节,0.333×2^15=10911=0x2A9F ,0.333的所有运算就可以用0x2A9F 表示,同理10911×2^(-15)=0.332977294921875 ,可以看出浮点数据通过 Q格式转化后是有误差的。
例:两个小数相乘,0.333*0.414=0.137862 0.333*2^15=10911=0x2A9F ,0.414*2^15=13565=0x34FD short a = 0x2A9F;
short b = 0x34FD;
short c = a * b >> 15; // 两个Q15格式的数据相乘后为 Q30格式数据,因此为了得到 Q15的数据结果需要右移15位
这样c的结果是0x11A4=0001000110100100 ,这个数据同样是 Q15格式的,它的小数点假设在第15位左边,即为0.001000110100100=0.1378173828125... 和实际结0.137862 差距不大。或者0x11A4 / 2^15 = 0.1378173828125
Q格式的运算
1> 定点加减法:须转换成相同的 Q格式才能加减
2> 定点乘法:不同Q格式的数据相乘,相当于Q值相加,即Q15数据乘以Q10数据后的结果是 Q25格式的数据
3> 定点除法:不同 Q格式的数据相除,相当于 Q值相减
4> 定点左移:左移相当于 Q值增加
5> 定点右移:右移相当于 Q减少
Q格式的应用格式
实际应用中,浮点运算大都时候都是既有整数部分,也有小数部分的。所以要选择一个适当的定标格式才能更好的处理运算。一般用如下两种方法:
1> 使用时使用适中的定标,既可以表示一定的整数复位也可以表示小数复位,如对于 2812的32位系统,使用Q15格式,可表示-65536.0~65535.999969482 区间内的数据。
2> 全部采用小数,这样因为小数之间相乘永远是小数,永远不会溢出。取一个极限最大值(最好使用2的n次幂),转换成x/Max 的小数(如果Max是取的2的n次幂,就可以使用移位代替除法) 。
- 关于Q格式数据总结
- 关于Q格式
- Q格式
- Q格式
- DSP上浮点数据定点化处理 Q格式(Q15)
- 关于RAW格式数据
- 关于RAW格式数据
- Q格式数
- Q格式之IQsat
- 802.1Q帧格式
- 项目q总结:关于Linux性能问题的一些思考
- 关于格式控制的总结
- 关于编码格式的总结
- Q格式(Q15)DSP上浮点数据定点化处理
- DSP的Q格式讲解
- Java Q&A : SimpleDateFormat 格式
- 关于Q复制
- 关于printf输出格式类型的总结
- switch_to_frame()带删除线处理
- jquery去处属性方法
- 大数据学习资料下载,新手攻略,数据分析工具、软件使用教程
- UE4 引用Windows自带的静态库和动态库
- C++ 闭包
- 关于Q格式数据总结
- python 判断闰年
- 大数据为何这么重要?
- 共享健身房方案内容
- leetCode- 从有序数组删除重复项
- C++中指针与引用
- linux网络编程(一)
- 9 Best Markdown Editors for Linux
- Celery: Unrecoverable error: AttributeError(“Can't pickle local object 'Pool.__init__.<locals