心胸决定格局,眼界决定境界...

定点c程序之四:除法

http://www.cnblogs.com/c6000/archive/2010/08/19/1802925.html

DSP一般都设计了一条特殊的减法指令(如SUBC)来完成定点数的除法运算。

在ITU-T的语音编码中的定点基本操作中,除法程序如下:

 

 Word16 div_s (Word16 var1, Word16 var2) //实现 var1/var2
{
Word16 var_out = 0;
Word16 iteration;
Word32 L_num = (Word32)var1;
Word32 L_denom = (Word32)var2;
for (iteration = 0; iteration < 15; iteration++)
{
var_out <<= 1;
L_num <<= 1;
if (L_num >= L_denom)
{
L_num = L_sub (L_num, L_denom);
var_out = add (var_out, 1);
}
}
return (var_out);
}
 @@:主要原理是每次设定商是16bit数除去符号位有15位有效数据那么就循环15次,每次循环中,如果被除数大于除数,就把被除数减去除数,商加一,然后下次循环,让减过的被除数左移一位,同时商也左移一位,重复15次。

 

这样商是一个Q15的数,而且输入要求被除数小于除数,也就是商肯定是个小数的情况才行

posted @ 2016-03-08 15:29  WELEN  阅读(339)  评论(0)    收藏  举报