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

 
 
 
«Для меня долгое время было загадкой, как что-то очень дорогое и технологичное может быть столь бесполезным. И вскоре я осознал, что компьютер — это глупая машина, обладающая способностями выполнять невероятно умные вещи, тогда как программисты — это умные люди, у которых талант делать невероятные глупости. Короче, они нашли друг друга.»
Bill Bryson
Русский | Українська


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

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

Запис операції в загальному вигляді виглядає так:

rn

rn

Як видно з цього вислову, в порядку результуючого числа присутній зайве доданок "- sh ".

rn

Результат можна записати в узагальненому вигляді як:

rn

rn

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

rn

rn

Причому, щоб уникнути переповнення, обов'язково дії слід виконувати в зазначеній послідовності.

rn

Для множення мантісс можна застосувати алгоритм наступний алгоритм: послідовно з молодших розрядів аналізується черговий біт мантісси m 1 : якщо m 1 ( i ) = 1, то виконується . Після цього відбувається зсув mR вправо. Якщо m 1 ( i ) = 0, то підсумування не провадиться, а зсув виконувати потрібно.

rn

При обчисленні порядку eR може вийти значення, що перевищує . Це ситуація переповнення при множення, яка повинна контролюватися. Якщо eR <0, то це ситуація втрати порядку (дуже маленький результат), яку теж треба перевірити.

rn

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




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