定点c程序之一:定标

定点DSP把所有数据都当作整数来处理

ü在定点DSP芯片中,数字运算都是基于整形数的运算,也即所有操作数都用整形数表示。运算精度取决于整形数的字长,一般定点DSP的字长为16、24、或32。
ü定点数用2的补码表示,16比特定点数表示的数值范围-32768~32767
ü如1111111111111100b = -4
ü定点DSP如何处理小数/分数?
ü数的定标:设定小数点在16位整形数的适当位置,小数点前面部分表示数的整数部分;小数点后面部分表示小数部分

当小数点处于不同位置时,所能表示的数字的范围不同,因此,要根据信号变量的取值范围来对数进行定标,选取合适的小数点位置。

数的定标有Q表示法和S表示法

定点数的数值计算方法
0000010.001010000 = 21+2-3+2-5=2+0.125+0.03125=2.15625
1111010.100000000 = -0000101.011111111+1

    =-0000101.100000000=-5.5

定点数的范围和精度
不同的Q值表示的数字范围不同,Q值越大,表示的数的范围越小,同时精度越大;
反之,Q值越小,表示的数的范围越大,数的精度越小.
Q15的表示的范围是-1~0.9999695,精度为1/32768;
Q0表示的范围是-32768~32767,精度为1

定点数的精度和范围是一对矛盾,程序员应该准确估计变量的动态范围,然后进行适当的定标,使数字表示既不会溢出,又能达到最高的精度.

定点数和浮点数的转换
浮点数(x)转换为定点数(xq):xq=intx * 2Q
定点数(xq)转换为浮点数(x):x=floatxq * 2-Q
原文地址:https://www.cnblogs.com/c6000/p/1802925.html