реклама на сайте
подробности

 
 
> Умножение 32 на code vision, проблема
Botadeus
сообщение May 3 2007, 14:22
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 22-04-07
Пользователь №: 27 233



необходимо осуществить 32 разрядное умножение, переменную создаю типа long, пишу на си что то типа
long temp;
int f[64];
flash int CAS[64][18]; // zabiti vse znacheniya vruchnuu - konstanta
temp = f[v]*CAS[v][t];

вообщем результат этой операции неверный, (распечатываю printf())
если даже что-то с распечаткой, то результат вычисления с огромной ошибкой,
написал тоже на билдере всё нормально считается.
прогу писал для mega 128
смотрел код который генерируется на асемблере, при вызове 3 раза вызов mul, тоесть по идеи всё правильно, только вот результат куда то девается либо вообще не знаю.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KRS
сообщение May 3 2007, 14:38
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



По стандарту С у вас будет умножаться 16 бит на 16 и результат будет 16.
Надо пистаь так

temp = (long)f[v]* (long)CAS[v][t];
Go to the top of the page
 
+Quote Post
Botadeus
сообщение May 3 2007, 14:53
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 22-04-07
Пользователь №: 27 233



Большое спасибо, умножатся начало. smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 09:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01434 секунд с 7
ELECTRONIX ©2004-2016