- •Лабораторна робота 5 Тема: Виконання операцiї зсуву в прямому, додатковому й оберненому кодi у сучасних комп`ютерах.
- •1. Основні теоретичні відомості
- •1.1 Загальнi поняття про операцiю зсуву
- •1.2 Зсув прямого коду додатних та від’ємних чисел на k розрядів праворуч і ліворуч
- •1.3 Зсув додаткового коду додатного та від’ємного числа на k розрядів праворуч і ліворуч
- •1.4 Зсув оберненого коду додатного та від’ємного числа на k розрядів праворуч і ліворуч
- •2 Контрольні питання
- •3 Контрольнi завдання
- •Вимоги до оформлення, захисту та оцінювання лабораторних робіт
- •Зразок оформлення титульного аркуша звіту про виконання лабораторної роботи
1.4 Зсув оберненого коду додатного та від’ємного числа на k розрядів праворуч і ліворуч
Зсув додатного числа ліворуч або праворуч у оберненому коді нічим не відрізняється від зсуву додатного числа в прямому коді.
Ще раз нагадаємо, що під зсувом від’ємного числа А, записаного інверсним (додатковим або оберненим) кодом, розуміють перетворення інверсного коду від’ємного числа А на інверсний код від’ємного числа А*2-k (у випадку зсуву праворуч) або А*2k (у випадку зсуву ліворуч).
При зсуві праворуч від’ємних дробів, представлених оберненим кодом, необхідно одержати наступну величину:
[A * 2-k]про = 2 – 2-n + A * 2-k.
При механічному зсуві, одержимо наступний код:
[A]про * 2-k = (2 – 2-n + A) * 2-k = (2 – 2-n) * 2-k + A * 2-k
Тобто необхідне виправлення на величину
[A * 2-k]про – [A]про * 2-k = (2 – 2-n) – (2 – 2-n) * 2-k =
= (1 + 2-1 + 2-2 + … + 2-n+1 + 2-n) – (2-k + 2-k-1 + … + 2-n +2-n-1 + … 2-n-k) =
= 1 + 2-1 + 2-2 +…+ 2-k+1 – 2-n-1 –2-n-1...
Корекція здiйснюється шляхом заповнення тих старших розрядів, що звільнилися, знаковими одиницями.
Одиниця у знаковому розряді відновлюється після кожного зсуву числа на 1 розряд (залишається нерухомою), а тi молодші від’ємні одиниці коду числа, що виходять за межі розрядної сітки, не враховуються (відкидаються).
Зсув праворуч коду двійкового числа з заповненням старших розрядів, якi звільнилися, символами, що збігаються із символами знаку, називають модифікованим зсувом.
Розглянемо приклад зсуву оберненого коду числа на k розрядів праворуч. А саме, результатом зсуву числа [A]про = 1,01011 на 2 розряди праворуч буде наступне значення: [A * 2-2]про = 1,11010.
При зсуві ліворуч від’ємного дробу, що заданий оберненим кодом, повинен вийти наступний дріб: [A * 2k]про = 2 – 2-n+ A * 2k .
Множення на 2k оберненого коду числа дасть значення [A]про* 2k = 2k+1 – 2k-n + A * 2k, що відрізняється від правильного значення на величину [A * 2k]про – [A]про* 2k = (2 – 2k+1) + (2k-n – 2-n).
Виправлення вноситься в наступний спосiб: виправлення на величину (2 - 2k+1) вноситься автоматично (старші розряди виходять за межі розрядної сітки); виправлення на величину (2k-n – 2-n) можна внести, заповнюючи ті молодші розряди, що звільнилися, одиницями.
Указане заповнення можна розглядати як результат дії циклічного переносу зі знакового розряду до молодшого розряду. Тобто, при кожному зсуві, всі цифри зображення дробу циклічно зміщаються ліворуч на 1 розряд, а знакова одиниця по ланцюжку циклічного переносу зміщається в розряд 2-n.
Розглянемо приклад зсуву оберненого коду числа на k розрядів лiворуч. Нехай заданi [A]про = 1,11010 і k = 2, тодi: [A * 2k]про = 1,01011.
Наведемо ряд важливих висновків.
Зсув додатного числа ліворуч або праворуч в iнверсному (додатковому або оберненому) коді є аналогічним зсуву додатного числа в прямому коді.
Зсув інверсного коду від’ємного числа А передбачає перетворення А на А*2-k у випадку зсуву праворуч або на А*2k у випадку зсуву ліворуч.
Загальним правилом для зсуву дробів праворуч при поданні числа будь-яким інверсним кодом є наявність передачі зі знакового розряду до старшого цифрового розряду та відновлення знаку (знак не зсувається).
Вiдзначимо, що, при зсуві прямого коду від’ємного числа, знак також не зсувається, але передач зі знакового до старшого цифрового розряду нема.
Оскільки кількість розрядів є обмеженою, то при зсуві інверсного коду числа праворуч, починаючи з деякого моменту, виходять: значення 0 при додатному вхідному числі; значення 2 – 2-n при від’ємному вхідному числі.
Кількість зсувів правильного дробу ліворуч обмежено умовою |A*2k|<1
(зсув припустимий, поки зберігається знак результату; зміна знаку при зсуві ліворуч є ознакою переповнення, що для від’ємних і додатних чисел збіга-ється з ознакою переповнення, що виникає при додаванні кодів двох чисел).
При зсуві ліворуч оберненого коду числа, необхідна циклічна передача вмісту знакового розряду до молодшого розряду коду 2-n і відновлення знаку.
