|
Вещественные числа, перемножение |
|
|
|
Apr 18 2007, 09:54
|
Участник

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

|
Заранее извиняюсь, если не в той ветке тему открыл.
Встала задача реализации на ПЛИС умножителя двух 32-разрядных чисел с плавающей точкой. В общих чертах алгоритм ясен. Проблемы начались, когда я попытался перемножить нормальное число и денормализованное. После сложения экспонент(Е) получился какой-то положительный результат (например 5). А в результате перемножения мантисс(М), результат меньше единицы.(например 0,000011…) . По идее необходимо это значение М сдвигать влево и при каждом сдвиге на бит, уменьшать Е на единицу. Делать это необходимо до тех пор, пока М не станет >=1, либо Е не станет нулем. На некотором этапе у меня получились значения: М=0,1…., Е=1. В данной ситуации я с одной стороны должен еще М сдвинуть на один разряд, поскольку Е позволяет. С другой стороны если Е принимает нулевое значение, то число денормализованное и М<1. Подскажите, если кто владеет, что с этим делать или поделитесь ссылками, где почитать. Спасибо…
|
|
|
|
|
 |
Ответов
|
Apr 19 2007, 15:59
|
Участник

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

|
Да, значение Е не может быть отрицательным. Но если Е=0, то число денормализованное, т.е М<1. Не совсем понятна ситуация. Берем два примера (значения в бинарном виде): Е=110 М=0,0001… Результирующие значения Е=010 М=1,…(нормальное число)
Другая комбинация: Е=010 М=0,0001… Результирующие значения Е=000 М=0,01…(денормализованное число)
А если вот такая комбинация Е=100 М=0,0001… Каковы результирующие значения?
|
|
|
|
|
Apr 19 2007, 19:13
|

Участник

Группа: Свой
Сообщений: 50
Регистрация: 23-07-05
Из: Россия, Киров
Пользователь №: 7 038

|
Цитата(deast @ Apr 19 2007, 16:59)  Да, значение Е не может быть отрицательным. Но если Е=0, то число денормализованное, т.е М<1. Не совсем понятна ситуация. Берем два примера (значения в бинарном виде): Е=110 М=0,0001… Результирующие значения Е=010 М=1,…(нормальное число)
Другая комбинация: Е=010 М=0,0001… Результирующие значения Е=000 М=0,01…(денормализованное число)
А если вот такая комбинация Е=100 М=0,0001… Каковы результирующие значения? Е=010 М=0,0001… Сдвигаем: 001 0,001xx Все, дальше некуда -> генерируем исключение 100 0,0001xx 011 0,001xx0 010 0,01xx00 001 0,1xx000 Дальше опять некуда -> исключение Такие числа, как в последнем примере входят в область, которые нельзя представить нормализованными числами в данной сетке. Погрешность. http://en.wikipedia.org/wiki/IEEE_754и IA-32 Intel Architecture Software Developer's Manual. Volume 1: Basic Architecture.
--------------------
Магам можно все.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|