定义
由于成本与功耗受限的原因,对于DSP处理器,遇到浮点数无法处理,所以需要利用定点数进行浮点数的运算,而DSP中运用Q格式进行表示。
当假定小数点位于第0位右侧时,为Q0。
当假定小数点再第15位右侧时,为Q15。
//第几位,从右向左数。计算数值时,按照位值进行计算
- N位的处理器最大可以表示为Q N-1。
eg
16进制数2000H
Q0时:0010 0000 0000 0000. = 2^13 = 8192
Q15时:0.010 0000 0000 0000 = 2^-2 = 0.25
- Q格式下的编码,用补码进行表示。
性质
当Q较大时,数值范围小,但精度高。当Q较小时,数值范围大,但精度低。
eg
Q15的数值表示范围:-1~0.9999695,精度:1/32768
Q0的数值表示范围:-32678~32767,精度:1
运算
基本运算
加减法:必须相同的Q格式的数据才能相加减,不同Q格式的数据必先通过移位至相同的Q格式后才能相加减。
乘法:不同Q格式的数据向乘,相当于Q值相加。
除法:不同Q格式的数据向乘,相当于Q值相减。
定点左移:相当于Q值相加。
定点右移:相当于Q值相减。
异常处理
加减法得出的数值范围超过处理器N位能表示的范围时,运算结果与补码溢出一致。
当乘除法的出的Q值范围超过处理器N位能表示的范围时,可通过移位,降低/增加精度获得运算结果,但过程中会有一定数据损失。
//一般为了避免溢出的发生,需要设置溢出保护功能,即当溢出发生时,将结果设置位最大值或最小值。