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

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: Канали вводу-виводу на основі МК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 розряд з відповідною корекцією порядку результату:  .




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