以上数据的下标 2、10 分别表示二进制、十进制。
通过设定小数点在 16 位数中的不同位置,就可以表示不同大小和不同精度的小数了。数的定标有 Q 表示法和 S 表示法两种。同样一个 16 位数,若小数点设定的位置不同,它所表示的数也就不同。例如:
16 进制数 2000H=8192,用 Q0 表示
16 进制数 2000H=0.25,用 Q15 表示
其中 Q0 表示小数的位数为 0,整数 15 位,符号 1 位;Q15 表示小数的位数是 15,整数 0位,符号 1 位。
但对于 DSP 芯片来说,不管小数设在什么位置,处理方法是完全相同的,都是看成 16位的整数,真正的数据是什么就需要根据工程师设定的 Q 来计算。 从表 1 可以看出,不同的 Q 所表示的数不仅范围不同,而且精度也不相同。Q 越大,数值范围越小,但精度越高;
相反,Q 越小,数值范围越大,但精度就越低。例如,Q0 的数值范围是-32768 到+32767,其精度为 1,而 Q15 的数值范围为-1 到 0.9999695,精度为 1/32768 = 0.00003051。因此,对定点数而言,数值范围与精度是一对矛盾,一个变量要想能够表示比较大的数值范围,必须以牺牲精度为代价;而想提高精度,则数的表示范围就相应地减小。在实际的定点算法中,为了达到最佳的性能,必须充分考虑到这一点。