Реализация умножения в формате ПЗ
Запись операции в общем виде выглядит так:
Как видно из этого выражения, в порядке результирующего числа присутствует лишнее слагаемое “– sh”.
Результат можно записать в обобщенном виде как:
Для операции умножения мантисса результатов формируется как , а порядок результата должен формироваться таким образом:
Причем, чтобы избежать переполнения, обязательно действия следует выполнять в указанной последовательности.
Для умножения мантисс можно применить алгоритм следующий алгоритм: последовательно с младших разрядов анализируется очередной бит мантиссы m1: если m1(i)=1, то выполняется . После этого производится сдвиг mRвправо. Если m1(i)=0, то суммирование не производится, а сдвиг выполнять нужно.
При вычислении порядка eRможет получиться значение, превышающее . Это ситуация переполнения при умножении, которая должна контролироваться. Если eR < 0, то это ситуация потери порядка (очень маленький результат), которую тоже нужно проверить.
Значение мантиссы может получиться (поскольку каждая из мантисс выглядит как m = 1,f), поэтому может потребоваться нормализация мантиссы результата путем сдвига вправо на 1 разряд с соответствующей коррекцией порядка результата: .
|