Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Практична робота № 2.
Тема: „Коди чисел та операції над ними”
Ціль роботи: знайомство з кодуванням двійкових чисел та алгоритмами машинної арифметики
Форма звіту: письмовий звіт з результатами виконання практичного завдання.
Методичні вказівки
Будь-яка інформація (числа, команди, букви і т.п.) представляється в ЕОМ у вигляді двійкових кодів фіксованої або перемінної довжини. Окремі елементи двійкового коду, що мають значення 0 або 1, називають розрядами або бітами. Вісім розрядів двійкового коду називаються байтом.
1. Коди чисел.
В ЕОМ з метою спрощення виконання арифметичних операцій застосовують спеціальні коди для представлення чисел. Використання кодів, наприклад, дозволяє звести операцію віднімання чисел до арифметичного додавання кодів цих чисел. Застосовуються прямий, зворотний і додатковий коди чисел. Прямий код використовується для представлення негативних чисел у запам'ятовуючому пристрої ЕОМ, а також при множенні і діленні. Зворотний і додатковий коди використовуються для заміни операції віднімання операцією додавання, що дозволяє використовувати одну й ту ж схему арифметико-логічного пристрою для двох операцій.
До кодів висуваються наступні вимоги:
1) Розряди числа в коді жорстко зв'язані з визначеною розрядною сіткою.
2) Для запису коду знака в розрядній сітці приділяється фіксований, строго визначений розряд.
Наприклад, якщо за основу представлення коду взяти один байт, то для представлення числа буде відведено 7 розрядів, а для запису знака - один розряд.
Прямий код. Прямий код двійкового числа співпадає з записом самого числа.
Значення знакового розряду для позитивних чисел дорівнює 0, а для негативних чисел 1. Знаковим розрядом звичайно є крайній розряд у розрядній сітці.
Надалі при записі коду знаковий розряд від цифрових умовимося відокремлювати комою.
Приклад. У випадку, коли для запису коду виділяється один байт, для числа +1101 прямий код 0,0001101, для числа -1101 прямий код 1,0001101.
Зворотний код. Зворотний код для позитивного числа співпадає з прямим кодом. Для негативного числа всі цифри числа заміняються на протилежні (1 на 0, 0 на 1), а в знаковий розряд заноситься одиниця.
Приклад.
Для числа +1101 прямий код 0,0001101; зворотний код 0,0001101.
Для числа -1101 прямий код 1,0001101; зворотний код 1,1110010.
Додатковий код. Додатковий код позитивного числа збігається з прямим кодом. Для негативного числа додатковий код утвориться шляхом одержання зворотного коду і додаванням до молодшого розряду одиниці.
Приклад.
Для числа +1101:
Прямий код |
Зворотний код |
Додатковий код |
0,0001101 |
0,0001101 |
0,0001101 |
Для числа -1101:
Прямий код |
Зворотний код |
Додатковий код |
1,0001101 |
1,1110010 |
1,1110011 |
2. Особливості додавання чисел у зворотному і додатковому кодах.
При додаванні чисел у додатковому коді одиниця, яка виникає при переносі в знаковому розряді, відкидається.
При додаванні чисел у зворотному коді одиниця, яка виникає при переносі в знаковому розряді, додається до молодшого розряду суми кодів.
Якщо результат арифметичних дій є кодом негативного числа, необхідно перетворити його в прямий код. При цьому зворотний код перетворюється прямою заміною цифр у всіх розрядах, крім знакового, на протилежні. Додатковий код перетвориться в прямий також, як і зворотний, але з наступним додатком одиниці до молодшого розряду.
Приклад.
Скласти двійкові числа X і Y у зворотному і додатковому кодах.
а) X= 111, Y= -11;
1) Складемо числа, користуючись правилами двійкової арифметики:
2) Складемо числа, користуючись правилами машинної арифметики:
Прямий код |
Додавання в зворотному |
Додавання в |
Результат додавання є кодом позитивного числа (знак 0), тому (X+Y)обр=(X+Y)доп=(X+Y)пр
б) X= -101,Y= -110;
1) Складемо числа, користуючись правилами двійкової арифметики:
2) Складемо числа, використовуючи коди:
Прямий код |
Додавання в зворотному |
Додавання в |
Сума є кодом негативного числа (знак 1), тому результат потрібно перевести в прямий код:
- зі зворотного коду
(X+Y)звор =1,1110100 (X+Y)пр=1,0001011;
- з додаткового коду
(X+Y)дод =1,1110101 (X+Y) пр=1,0001010+0,0000001=1,0001011.
Таким чином, X+Y= -1011 і отриманий результат збігається зі звичайним записом.
3. Модифіковані зворотний і додатковий коди.
При переповненні розрядної сітки відбувається перенос одиниці в знаковий розряд. Це приводить до неправильного результату, причому позитивне число, що вийшло в результаті арифметичної операції може сприйматися як негативне (тому що в знаковому розряді "1") і навпаки.
Наприклад:
Тут X і Y - коди позитивних чисел, але ЕОМ сприймає результат їхнього додавання як код негативного числа ("1" у знаковому розряді). Для виявлення переповнення розрядної сітки вводять модифіковані коди.
У модифікованих зворотних і модифікованому додатковому кодах під знак числа приділяється не один, а два розряди: "00" відповідає знакові "+", "11" - знакові "-". Будь-яка інша комбінація ("01" або "10"), що вийшла в знакових розрядах, служить ознакою переповнення розрядної сітки. Додавання чисел у модифікованих кодах нічим не відрізняється від додавання в звичайних зворотному і додатковому кодах.
Розглянемо приклад X=+101011, Y=+110100, виконавши додавання в модифікованому зворотному коді:
Комбінація "01" у знакових розрядах означає, що відбулося переповнення і результат, що вийшов - невірний.
Розглянемо ще один приклад.
Приклад. Дано два числа: X=101001 і Y= -11010. Скласти їх у модифікованому додатковому коді.
1) Переведемо X і Y у модифікований додатковий код:
Звичайний запис |
Модифікований |
Модифікований додатковий |
X= +101001 |
2) Виконаємо додавання:
Переповнення немає (у знакових розрядах "00"), тому отриманий результат - вірний (X+Y=1111)
У випадку появи ознаки переповнення збільшити число розрядів у кодах і повторити складання.
Вправи.
1) Записати число в прямому, зворотному і додатковому кодах:
а) 11010; б) -11101; в) -101001; г) -1001110.
2) Перевести X і Y у прямий, зворотний і додатковий коди. Скласти їх у зворотному і додатковому кодах. Результат перевести в прямий код. Перевірити отриманий результат, користуючись правилами двійкової арифметики.
а) X= -11010; |
б) X= -11101; |
в) X= 1110100; |
г) X= -10110; |
д) X= 1111011; |
е) X= -11011; |
3) Скласти X і Y у модифікованому зворотному і модифікованому додатковому восьмирозрядних кодах. У випадку появи ознаки переповнення збільшити число розрядів у кодах і повторити складання. Результат перевести в прямий код і перевірити, користуючись правилами двійкової арифметики.
а) X= 10110; |
б) X= 11110; |
в) X= -11010; |
г) X= -11001; |
д) X= -10101; |
е) X= -1101; |