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

 
 
> Вещественные числа, перемножение
deast
сообщение Apr 18 2007, 09:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 8-06-05
Пользователь №: 5 827



Заранее извиняюсь, если не в той ветке тему открыл.

Встала задача реализации на ПЛИС умножителя двух 32-разрядных чисел с плавающей точкой. В общих чертах алгоритм ясен. Проблемы начались, когда я попытался перемножить нормальное число и денормализованное. После сложения экспонент(Е) получился какой-то положительный результат (например 5). А в результате перемножения мантисс(М), результат меньше единицы.(например 0,000011…) . По идее необходимо это значение М сдвигать влево и при каждом сдвиге на бит, уменьшать Е на единицу. Делать это необходимо до тех пор, пока М не станет >=1, либо Е не станет нулем. На некотором этапе у меня получились значения: М=0,1…., Е=1. В данной ситуации я с одной стороны должен еще М сдвинуть на один разряд, поскольку Е позволяет. С другой стороны если Е принимает нулевое значение, то число денормализованное и М<1. Подскажите, если кто владеет, что с этим делать или поделитесь ссылками, где почитать. Спасибо…
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
deast
сообщение Apr 25 2007, 12:49
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 8-06-05
Пользователь №: 5 827



Все, понял. Может кому пригодится. Оказывается истинное значение экспоненты равно единице, когда Е=0. Поэтому М сдвигаем влево пока оно не выполнится одно из условий: М>=1 или Е=1. Далее проверяем. Если М>=1, то в поле экспоненты записываем текущее значение Е, а если нет, то записываем ноль. В поле мантиссы записывается текущее значение М после запятой...
Go to the top of the page
 
+Quote Post



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

 


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


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