Подання додатних і від’ємних двійкових чисел та правила виконання операції алгебраїчного додавання в оберненому коді 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Подання додатних і від’ємних двійкових чисел та правила виконання операції алгебраїчного додавання в оберненому коді



 

Якщо знаковий розряд числа має вагу (pn+1 – pk), на відміну від pn+1 для додаткового коду, то кількісний еквівалент числа А =aзнa-1…a-n…a-k, заданого в позиційній системі числення з основою р, буде визначатися виразом

.

Такі коди називають оберненим и, оскiльки взаємне перетворення від’ємних чисел не вимагає залучення арифметичних операцій.

Додатні числа в оберненому коді мають таке саме зображення, як і в прямому та додатковому кодах.

Зв'язок між значеннями цифр прямого коду аi і цифр оберненого коду аi|| має наступний вид: аi + аi|| = p – 1, i = –k, …,n...

Взаємне перетворення прямого й оберненого кодів здійснюється як порозрядна операція взяття доповнення до р - 1від заданих цифр.

Обернений код від’ємного дробу дорівнює його інверсному значенню й утворюється за наступним правилом: у знаковому розряді числа проставляється 1; усі інші цифри заміняються на взаємообернені.

Перехід від оберненого коду до прямого є аналогічним.

Функція кодування двійкових чисел в оберненому коді є наступною:

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

Особливістю оберненого коду є те, що при одержанні суми подекуди виникає необхідність корекції результату на 2-n, оскiльки інверсне значення чисел відрізняється від їх доповнення на одиницю молодшого розряду.

У оберненому коді, як і в додатковому, операція віднімання замінюється операцією додавання.

Знаковий розряд і цифрова частина числа розглядаються також, як єдине ціле, унаслідок чого машина оперує з від’ємними числами, як iз неправильними дробами.

Правильний знак суми виходить автоматично в процесі додавання цифр знакових розрядів операндів та одиниці переносу з цифрової частини, якщо вона є.

Характерною рисою оберненого коду є наявність циклічного переносу (якщо він виникає) зі знакового розряду до молодшого розряду цифрової частини, завдяки якому здійснюється корекція суми на 2-n.

Зазначена вище особливiсть обумовлена тим, що додавання здійснюється за модулем 2 – 2-n.

Розглянемо 4 можливих випадки додавання двох чисел в оберненому коді за умови |A| > |B| і |A| + |B| < 1

Випадок 1. А > 0; В > 0; С > 0.

[A]о = A; [B]о = B;

[С]о = С = [A]о + [B]о = А + В.

Оскiльки обернений код додатних чисел не відрізняється від самих чисел, то визначення їх суми збігається з її одержанням у прямому коді.

Випадок 2. А > 0; В < 0; С > 0.

Сума є додатною, а тому результат повинен вийти в прямому коді:

[A]о = A; [B]о = 2 – 2-n + B;

[С]о = С = [A]о + [B]о = А + 2 – 2-n + В.

Отримана сума відрізняється від істинної на (2 – 2-n), тобто потрібна корекція на дану величину.

Корекція на 2 виходить автоматично, оскiльки для зображення 2 у розрядній сітці комп`ютеру нема місця.

Корекцію на 1 молодшого розряду одержують шляхом додавання в молодший розряд суми одиниці переповнення, що виникає при додаванні цифр знакових розрядів.

Тобто виконується так званий циклічний перенос.

Приклад. Задано А = 0,10101, В = –0,01001. Знайти [C]о

[A]о = 0,10101

[B]о = 1,10110

10,01011

®+1

[C]о = 0,01100

Випадок 3. А < 0; В > 0; С < 0.

Сума є від’ємною, а тому результат повинен вийти в оберненому коді:

[A]о = 2 – 2-n + A; [B]о = B; [С]о = С = [A]о + [B]о = 2 – 2-n + A+ В.

Тобто результат корекції не вимагає.

Приклад. Задано А = –0,10101, В = 0,01001. Знайти [C]о

[A]о = 1,01010

[B]о = 0,01001

[C]о = 1,10011

У другому та третьому випадках, при А = В результат дорівнює –0, тобто маємо 1,11...11.…11.

Випадок 4. А < 0; В < 0; С < 0.

Сума є від’ємною, а тому результат повинен вийти в оберненому коді:

[A]о = 2 – 2-n + A; [B]о = 2 – 2-n +B;

[С]о = 2 – 2-n + С = [A]о + [B]о = 2 – 2-n + A+ 2 – 2-n + В.

Як і в другому випадку, необхідна корекція результату тільки на одиницю молодшого розряду, оскiльки для зображення 2 у розрядній сітці комп`ютеру нема місця. Виправлення вноситься аналогічно другому випадку.

[A]о = 1,01010

[B]о = 1,10110

11,00000

®+1

[C]о = 1,00001

Очевидно, що в усіх розглянутих випадках додавання кодів, доданки можна поміняти місцями, і при цьому код суми не зміниться.

Ланцюжок циклічного переносу, необхідний для реалізації корекції суми на величину 2-n, являє собою ланцюг переносу зі знакового розряду суматору до молодшого розряду, тобто суматор замикається в кільце.

Даний ланцюжок може залишатися постійно замкнутим, оскiльки перенос зі знакового розряду виникає тільки тоді, коли дійсно необхідно реалізувати корекцію суми.

Час, необхідний для одержання результату, зростає незначно.

У цілому, за апаратурними витратами, часом реалізації та структурою алгоритму, алгебраїчне додавання обернених кодів є еквівалентним додаванню додаткових кодів.

Обернений код є досить зручним для виконання операції алгебраїчного додавання, якщо врахувати простоту перекладу від’ємних чисел із прямого коду в обернений і навпаки. Виконувати операції множення та ділення в оберненому коді нема смислу.

У оберненому коді, переповнення розрядної сітки можливе при неправильному виборі масштабних коефіцієнтів у першому й четвертому випадках. Ознакою переповнення, як і в інших кодах, є відмінність знаку результату від знаків доданків.

Таким чином, для заміни операції вiднiмання операцією додавання необхідно зробити спеціальне кодування чисел.

У сучасних комп`ютерах, операції в режимі фіксованої коми виконуються, як правило, над цілими числами. Від’ємні числа зберігаються в оперативній пам'яті та беруть участь в операціях у оберненому коді.

Оскільки операції виконуються над числами, вирівняними по молодших розрядах, то операнди, якими є додатні цілі числа, що займають тільки частину розрядів слова, мають у всіх розрядах ліворуч старшої значущої цифри 0, а від’ємні – одиниці.

За необхідності, подовження операндів убік старших розрядів здiйснюється простим додаванням розрядів, вміст яких дорівнює вмісту знакового розряду (0 або 1).

Знакові розряди беруть участь в операціях додавання-вирахування нарівні з цифровими. Попередній аналіз знакових розрядів операндів не здiйснюється, оскiльки, при виконанні команди віднiмання, від'ємник автоматично перетвориться на інверсний код.

По закінченні процесу додавання, здiйснюється аналіз результату та вироблення його ознаки: більше, менше, дорівнює 0, переповнення.

КОНТРОЛЬНІ ПИТАННЯ

 

1. Як утворюються та чим відрізняються прямі коди додатних і від’ємних чисел?

2. У чому полягають правила, переваги та недоліки додавання чисел у прямому коді?

3. Чи має у прямому коді вагу знаковий розряд та як розглядаються знаковий розряд і цифрова частина числа (як єдине ціле чи окремо)?

4. Як утворюються додатковi коди додатних i від’ємних чисел?

5. Сформулювати правила додавання чисел у додатковому коді.

6. Проаналiзувати, чи має у додатковому коді знаковий розряд вагу?

7. Обгрунтувати, чи розглядаються у додатковому коді знаковий розряд і цифрова частина числа як єдине ціле?

8. Пояснити, як виконується операція віднімання у додатковому коді.

9. Назвати ознаки переповнення при виконанні операції алгебраїчного додавання в додатковому коді.

10. Пояснити, як утворюється модифікований додатковий код числа та сформулювати його призначення.

11. Назвати ознаки переповнення при виконанні операції додавання в модифікованому додатковому коді та пояснити, як можна його позбутися.

12. Сформулювати, як утворюються оберненi коди додатних i від’ємних чисел.

13. Назвати правила додавання чисел у оберненому коді.

14. Чи має у оберненому коді знаковий розряд вагу?

15. Як розглядаються у оберненому коді знаковий розряд і цифрова частина числа (як єдине ціле чи окремо)?

16. Як виконується операція віднімання у оберненому коді?

17. Якими є ознаки переповнення при виконанні операції додавання в оберненому коді й як позбутися переповнення?

 



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 273; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.223.196.211 (0.019 с.)