在TI的文档<spru402 _TMS320C62x DSP Library Programmer’s Reference>中,提到了Q格式。关于这个,我手上的两本书,都没有提到,而TI的这个文档里也只是在附录里简单说明了一下。大意是:DSPLIB函数一般都使用Q15格式。其实这个Q15确切的说是Q0.15。格式是Qm.n,m指小数点前(即整数部分)的数的个数,n指小数点后(即小数部分)的数的个数,再加上最高位是符号位,这样Q15就是一个16位的word。它表示的范围是(1,-1)。它表示的数分辨率是2的-15次方,数是用2的补码来表示的。

 

如此,既然可以有Q.15,那也可以有Q.31,当然也可以有Q3.12这样形式的。可以看出,不同的Q所表示的数不仅范围不同,而且精度也不相同。Q越大,数值范围越小,但精度越高;相反,Q越小,数值范围越大,但精度就越低。范围与精度是一对不可调和的矛盾,实际应用中,只能视实际需要来取平衡。

有了Q格式,就可以用定点DSP来计算浮点数。

———-  关于补码相关知识的温故知新 ———-

原码就是这个数本身的二进制形式。如:00000001 就是+1 10000001 就是-1。
反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

补码的意义:
(1)补码统一正0和负0
(2)补码中符号位要与有效值部分一起进行运算。
(3)使减法运算转换为加法运算。 [a-b]补=[a]补+[-b]补

链接1:关于补码的详细介绍

链接2:DSP定点算数运算