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

 
 
> Математический вопрос, Программирование на ассемблере
d7d1cd
сообщение Dec 21 2013, 16:41
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Привет всем. Я программирую на ассемблере. В моей программе все числа хранятся в 32-х разрядах. Соответственно, математические операции (умножение, деление и прочие), реализованы с помощью функций, которые так же работают с 32-х разрядными числами.
Сейчас возникла такая проблема. Мне необходимо сделать вычисления по следующей формуле: X = A * B / C. Числа A, B, C, X - 32-х разрядные. Результат в Х точно поместится в 32 разряда, но при выполнении операции А*В может получится 64-х разрядное число. Подскажите, возможно ли, не прибегая к использованию 64-х разрядных функций и чисел, выполнить вычисления по формуле?

P.S. Функция деления возвращает 2 результата: частное и остаток. Все числа исключительно положительные.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Xenia
сообщение Dec 21 2013, 16:55
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(d7d1cd @ Dec 21 2013, 20:41) *
... но при выполнении операции А*В может получится 64-х разрядное число. Подскажите, возможно ли, не прибегая к использованию 64-х разрядных функций и чисел, выполнить вычисления по формуле?


Откуда такое ограничение? Чем, собственно, плохо 64-разрядное число в качестве промежуточного результата?
Go to the top of the page
 
+Quote Post
d7d1cd
сообщение Dec 21 2013, 17:11
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 442
Регистрация: 26-11-10
Пользователь №: 61 199



Цитата(Xenia @ Dec 21 2013, 20:55) *
Откуда такое ограничение? Чем, собственно, плохо 64-разрядное число в качестве промежуточного результата?

Для этого надо писать функцию умножения с получением 64-х разрядного результата, а так же функцию деления 64-х разрядного числа. Я не случайно пишу на асме: у меня места под мою программу очень мало и лишние функции это не айс. Если бы в моем распоряжении была вся память, то я бы писал на С и не задавал таких вопросов.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- d7d1cd   Математический вопрос   Dec 21 2013, 16:41
- - lekintr   Цитата(d7d1cd @ Dec 21 2013, 20:41) Резул...   Dec 21 2013, 17:15
- - d7d1cd   Ну вообще то под словами "результат в Х...   Dec 21 2013, 17:37
|- - kovigor   Цитата(d7d1cd @ Dec 21 2013, 20:37) Ну во...   Dec 21 2013, 19:20
|- - d7d1cd   Цитата(kovigor @ Dec 21 2013, 23:20) А чт...   Dec 22 2013, 06:26
- - Егоров   Хм.. так 32 разряда - точность. Умножайте спокойно...   Dec 21 2013, 21:53
- - PRidon   Ну есть один вариант. Делал похожее умножение на 8...   Dec 23 2013, 07:38
|- - d7d1cd   Цитата(PRidon @ Dec 23 2013, 11:38) Ну ес...   Dec 23 2013, 17:34
|- - d7d1cd   Цитата(PRidon @ Dec 23 2013, 11:38) Пусть...   Dec 24 2013, 14:28
- - PRidon   Процессор та какой? Если умножитель аппаратный, то...   Dec 24 2013, 06:18
- - PRidon   Это обычное умножение столбиком. Что переполняется...   Dec 25 2013, 04:57
- - d7d1cd   Итак, умножению иною реализовано. Вот код: Код//**...   Dec 25 2013, 17:40
- - PRidon   как разберешься с делением - выложи результат. Пол...   Dec 26 2013, 05:31
- - demiurg_spb   Я бы, прежде чем изобретать велосипед, ознакомился...   Dec 26 2013, 06:19
- - d7d1cd   Цитата(PRidon @ Dec 26 2013, 09:31) как р...   Dec 26 2013, 11:10


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

 


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


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