Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Э-э-э, Вы в столбик умножать-делить умеете? Процессора делают так же:-)

Отправлено -=ВН=- 16 января 2007 г. 12:02
В ответ на: Где найти математические процедуры умножения и деления 24-х разрядных безнаковых чисел для ATMega128? отправлено <font color=gray>Yaumen</font> 16 января 2007 г. 11:07

Знаковое умножение столбиком 32 на 32 с 64 р. результатом на C. Без использования оп. умножения:-))
void mul3232result64(long op1,long op2,long *result)
{
long high;
unsigned long lowres,tmp,low;
char sign;
sign=0;
if(op1<0) {sign=1;op1=-op1;}
if(op2<0) {op2=-op2;sign^=1;}
low=op2;
high=0L; //{high,low} - 64 bit version of abs of operand op2;
lowres=0L; //low 32 bits of result
result[1]=0L; //high 32 bits of result
while (op1)
{
if((op1&1L))
{
tmp=lowres+low;
if(tmp lowres=tmp;
result[1]+=high;
}
high<<=1;
if((low&0x80000000L)) high++;//CARRY detection
low<<=1;
op1>>=1;
}
if(sign)
{
lowres^=0xffffffffL;
result[1]^=0xffffffffL;
tmp=lowres+1L;
if(tmp lowres=x;
}
result[0]=lowres;
/*
result[1] - high 32 bit of result;
result[0] - low 32 bit of result
*/
}




Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
сколько миллиампер в одном ампере ?:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru