设浮点乘法运算的表达式为:
float x,y,z;
z=xy ;
假设经过统计后x的Q值为Qx,y的Q值为Qy,乘积z的Q值为Qz,则
zq*2^(- Qz) = xq* yq*2^(-(Qx +Qy))
zq=(xq* yq)*2^( Qz -(Qx +Qy))
所以定点表示的乘法为:
int x,y,z;
long temp;
temp=(long)x;
z=(temp×y)>>( QX + Qy– Qz);
例:
Q15×Q15=Q30 0.5×0.5 = 0.25
0.100 0000 0000 0000
×0.100 0000 0000 0000
------------------------------------------------------------------
00.01 0000 0000 0000 0000 0000 0000 0000 = 0.25 ; Q30
Q14×Q14=Q28 1.5×0.75=1.125
01.00 0000 0000 0000
×00.11 0000 0000 0000
-------------------------------------------------------------------
0001. 0010 0000 0000 0000 0000 0000 0000 = 1.125 ; Q28