ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
4 мая
2392 Топик полностью
BH (25.12.2003 18:05, просмотров: 1) ответил Max_Fly на люди!!! плиз - ткните носом в алгоритм многобайтного деления - надо 32 бита разделить на 16 бит например ну или на 8 хотя бы.
Ответ: В общем это деление столбиком, что на бумажке делают.
В dsp есть, как правило, к-да, которая одну элементарную операцию такого деления делает (то, что внутри цикла).
В примере возвращается частное. Остаток, reminder, тоже вычисляется, а как его вытащить, решите сами.
Ограничения - старшие 16 разрядов делимого должны быть меньше, чем делитель. Иначе случится переполнение.
Да, и делимое и делитель положительные.
Т.к. у меня периодически возникают глюки при написании, то прощу прощения заранее, если что не так. По смыслу, по крайней мере,
все правильно :-)



int div3216(long dividend, int divisor)
{
int i;
int quotien,reminder;
long tmp;
for(i=0;i<16;i++)
{
tmp=dividend-(((long)divisor)<<16);
if(tmp>=0) dividend=((tmp<<1))+1L;
else dividend<<=1;
}
quotien=(int)(dividend&0xffffL);
dividend>>=16;
reminder=(int)(dividend&0xffffL);
return quotien;
}