Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_Вычисл техн и микропроц_Часть1_...doc
Скачиваний:
17
Добавлен:
04.05.2019
Размер:
3.06 Mб
Скачать

2.3 Порозрядні операції над даними

Вхідний контроль:

  1. Які правила виконання арифметичних операцій у позиційних системах числення Ви знаєте?

Виконання операції додавання у кодах дещо відрізняється від звичайного:

  • розряди знаковий і розряди числа є рівноправними і перенесення у знаковий розряд необхідно враховувати і додавати до знакових розрядів;

  • при виконанні операції додавання в ОК перенесення із знакового розряду необхідно додавати до молодшого розряду числа ( операція циклічного перенесення);

  • при виконанні операції додавання в ДК перенесення із знакового розряду ігнорується і відкидається.

Розглянемо операцію додавання цілих двійкових чисел зі знаком у кодах. Для подання у кодах необхідно користуватися восьмирозрядною сіткою (з урахуванням знака) у вигляді байта.

1 Для чисел з різними знаками

27D – 30D = 27D + (– 30D) = 11011В – 11110В

представимо двійкові числа у кодах

ОК ДК

+ 11011В 0.0011011 + 11011В 0.0011011

– 11110В 1.1100001 – 11110В 1.1100010

Виконаємо операцію додавання у кодах

ОК ДК

0 .0011011 0.0011011

1.1100001 1.1100010

1.1111100 1.1111101

Результати отримано у відповідних кодах. Перетворимо їх на ПК і подамо у десятковій системі числення

1.1111100ОК 1.0000011ПК – 3D.

Результат при роботі з оберненним кодом правильний.

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

1.1111101ДК – 1 = 1.1111100ОК 1.0000011ПК – 3D.

Результат також правильний.

Слід зазначити, що мікропроцесори виконують операцію додавання у доповнювальному коді, тому на етапі підготовки даних їх слід подати у вигляді ДК. Результат операції також подається в ДК. Для переведення його в ПК слід використовувати спеціальні програми, які виконують це перетворення.

2 Для двох інших чисел з різними знаками

– 27D + 30D = – 1011В + 11110В

представимо двійкові числа у кодах

ОК ДК

– 11011В 1.1100100 – 11011В 1.1100101

+ 11110В 0.0011110 + 11110В 0.0011110

Виконаємо операцію додавання у кодах

ОК ДК

1 .1100100 1.1100101

0.0011110 0.0011110

1 0.0000010 1 0.0000011

1

0.0000011

При виконанні операції в ОК перенесення із знакового розряду було враховано в результаті, а при виконанні операції в ДК – відкинуто. Результат в обох випадках отримано у вигляді додатного числа 11В = 3D, що є правильним.

При виконанні додавання даних, поданих у двійково-десятковій системі числення, виникає необхідність корегування результату в таких випадках:

  • при формуванні суми у тетраді отримано число, яке не є цифрою десяткової системи числення, наприклад,

0

+

000 1001BCD

0000 0110BCD

0000 1111BCD

у молодшій тетраді отримано двійкове число 1111В, яке неможливо подати у десятковій системі числення;

  • при формуванні суми виникає перенесення до старшого розряду (старшої тетради), а значення результату в тетраді є невірне, наприклад,

0 000 1001BCD

0000 1000BCD

0001 0001BCD

у молодшій тетраді отримано двійкове число 0001В, замість 0111В, яке є правильним результатом.

В обох випадках корекція результату в тетраді буде виконуватися при використанні коду з надлишком 3 для обох складових, або при додаванні 6D (0110B) до результату. У першому випадку:

0 000 1111BCD

0000 0110BCD

0001 0101BCD

Контрольні запитання:

  1. Чому може з’явитися необхідність корекції результату при виконанні арифметичних операцій над числами, які подані у двійково-десятковій системі числення?

  2. Який код використовується для корекції результату арифметичної операції над числами, які подані у двійково-десятковій системі числення?

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

Контрольні запитання підвищеної складності:

  1. Виконати операцію (+92 – 121) у доповнювальному коді. Отримати результат і перевести його у десяткову систему числення.

  2. Виконати операцію (+92 – 121) в оберненному коді. Отримати результат і перевести його у десяткову систему числення.

  3. Виконати операцію (+ 121 – 92) у доповнювальному коді. Отримати результат і перевести його у десяткову систему числення.

  4. Виконати операцію (+ 121 – 92) в оберненному коді. Отримати результат і перевести його у десяткову систему числення.

  5. Перевести число +8,73 у двійкову систему числення і подати у вигляді з плаваючою точкою (у вигляді мантиси і порядку). Мантису подати у вигляді округленого восьмирозрядного (з урахуванням знака) двійкового числа у прямому, зворотному та доповнювальному кодах.

  6. Перевести число –5,63 у двійкову систему числення і подати у вигляді з плаваючою точкою (у вигляді мантиси і порядку). Мантису подати у вигляді округленого восьмирозрядного (з урахуванням знака) двійкового числа у прямому, зворотному та доповнювальному кодах.

  7. Виконати операцію додавання чисел, отриманих у попередніх пунктах в оберненному коді.

  8. Виконати операцію додавання (+ 8.73 –5,63) у доповнювальному коді.

  9. Представити число 95 у двійково-десятковій системі числення.

  10. Пояснити, чому при виконанні арифметичних операцій над числами, поданими у двійково-десятковій системі числення, необхідно використовувати код з залишком 3?

  11. Як перевести десяткові числа 95 і 55 у двійково-десяткову систему числення? Виконати над отриманими числами операцію додавання. Скорегувати результат.