Лабораторна робота №123. Основи машинної арифметики.
Мета роботи. Вивчити основи машинної арифметики, представлення чисел в прямому, зворотному і додатковому кодах і арифметичних операцій над ними.
Будь-які дані (числа, текст, команди програм і ін.) В пам'яті комп'ютера представлені двійковими кодами, які представляють собою сукупність бітів. Зокрема, двійковий код, що містить 8 біт (кажуть: "8 розрядів"), називається байтом. Для зберігання даних використовують такі формати двійкового коду: 8-розрядний (байт), 16-розрядний (півслова), 32-розрядний (слово) і 64-розрядний (подвійне слово).
Для виконання арифметичних операцій використовують спеціальні коди уявлення чисел, які дозволяють звести операцію віднімання чисел до арифметичного складання цих кодів. Розрізняють прямий. зворотний і додатковий коди. Прямий код використовується для представлення негативних чисел в пам'яті комп'ютера, а також при виконанні операцій множення і ділення. Зворотний і додатковий коди застосовуються для виконання операції віднімання, яку замінюють операцією додавання чисел з різними знаками: а-b = a + (- b).
У коді числа кожного розряду відповідає певний елемент розрядної сіткою. Для запису знака числа в розрядної сітці є строго певний фіксований розряд, зазвичай це крайній розряд розрядної сітці.
Зауваження. Домовимося при запису коду знаковий розряд числа відокремлювати комою від інших розрядів. Якщо формат числа невідомий будемо вважати, що число 8-розрядний (байт).
Завдання 1. Запишіть наступні числа в прямому, зворотному і додатковому кодах.
а) 1101011; б) -101011; в) -101101; г) -1100111.
Прямий код цілого числа. Під прямим кодом двійкового числа розуміють запис самого числа. Значення знакового розряду для позитивних чисел визначають рівним нулю (0), для негативних чисел - одиниці (1). Наприклад, для запису коду використовується байт, то:
При додаванні чисел в знаковому розряді може з'явитися дві цифри, другу одиницю від коми називають одиницею переносу.
При додаванні чисел в додатковому коді виникає одиниця перенесення в знаковому розряді відкидається.
При додаванні чисел в зворотному коді виникає одиниця перенесення в знаковому розряді додається до молодшого розряду суми кодів.
Якщо результат арифметичних дій є кодом негативного числа, необхідно перетворити його в прямий код. При цьому зворотний код перетвориться в прямий заміною цифр у всіх розрядах, крім знакового, на протилежні. Додатковий код перетвориться в прямій так само, як і зворотний, з подальшим збільшенням одиниці до молодшого розряду.
Приклад. Скласти X і Y в зворотному і додатковому кодах:
а) X = 1111 та Y = -101.
Складемо числа, користуючись:
Так як результат складання є кодом позитивного числа (знаку плюс (+) відпо-яття 0 в знаковому розряді), то (X + Y) обр = (X + Y) доп = (X + Y) тощо.
Складемо числа, користуючись:
Так як сума є кодом негативного числа (знак 1), то необхідно перевести результати в прямий код:
з зворотного коду: (X + Y) обр = 1,1110011 (X + Y) пр = 1,0001100;
з додаткового коду: (X + Y) доп = 1,1110100 (X + Y) пр = 1,0001011 + 0,0000001, (X + Y) пр = 1,0001100.
Отримали X + Y = -1100, результат збігається з сумою, отриманою за правилами двійковій арифметики.
Завдання 3. Складіть числа X і Y в модифікованому зворотному і модифікованому додатковому восьмирозрядних кодах. При виявленні переповнення збільште число розрядів в кодах і повторіть підсумовування. Результат переведіть в прямий код. Отриманий результат перевірте, використовуючи правила двійковій арифметики.
Модифіковані зворотний і додатковий коди.
Переповнення розрядної сітки може привести до перенесення одиниці в знаковий розряд, що призведе до неправильного результату. Позитивне число, що вийшло в результаті арифметичної операції може сприйматися як негативне, так як в знаковому розряді з'явиться "1" і навпаки.
Наприклад: X = 0,1011110
X і Y - коди позитивних чисел, але в процесі складання в знаковому розряді з'явилася "1", що означає код негативного числа. Щоб розпізнати переповнення розрядної сітки вводяться модифіковані коди.
Модифікований зворотний код характеризується тим, що під знак числа відводиться не один, а два розряду. Форма запису чисел в модифікованому зворотному коді виглядає наступним чином:
для позитивного числа X = X
=;для негативного числа X = X
=;(
- позначення логічної операції заперечення «не X", якщо X = 0, то= 1; X = 1,= 0).В модифікованих зворотному і додатковому кодах під знак числа відводиться не один, а два розряду: "00" відповідає знаку "+", "11" - знаку "-". Будь-яка інша комбінація ( "01" або "10"), що вийшла в знакових розрядах є ознакою переповнення розрядної сітки. Додавання чисел в модифікованих кодах нічим не відрізняється від складання в звичайних зворотному і додатковому кодах.
Приклад. Дано два числа: X = 101001 і Y = -11010. Скласти їх в додатковому і модифікованому додатковому кодах.