Микропроцессоры и микроконтроллеры

 
 
 
«Если вы считаете, что C++ труден, попытайтесь выучить английский.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Каналы ввода-вывода на основе МК51 :: Реализация умножения в формате ПЗ

Реализация умножения в формате ПЗ

Запись операции в общем виде выглядит так:

Как видно из этого выражения, в порядке результирующего числа присутствует лишнее слагаемое “– sh”.

Результат можно записать в обобщенном виде как:

Для операции умножения мантисса результатов формируется как , а порядок результата должен формироваться таким образом:

Причем, чтобы избежать переполнения, обязательно действия следует выполнять в указанной последовательности.

Для умножения мантисс можно применить алгоритм следующий алгоритм: последовательно с младших разрядов анализируется очередной бит мантиссы m1: если m1(i)=1, то выполняется . После этого производится сдвиг mRвправо. Если m1(i)=0, то суммирование не производится, а сдвиг выполнять нужно.

При вычислении порядка eRможет получиться значение, превышающее . Это ситуация переполнения при умножении, которая должна контролироваться. Если eR < 0, то это ситуация потери порядка (очень маленький результат), которую тоже нужно проверить.

Значение мантиссы может получиться (поскольку каждая из мантисс выглядит как m = 1,f), поэтому может потребоваться нормализация мантиссы результата путем сдвига вправо на 1 разряд с соответствующей коррекцией порядка результата: .




Следующая статья >>
«Реализация деления в формате ПЗ»