- •Лабораторна робота №2 Тема: Переведення чисел. Доповнювальний, прямий і зворотній код. Операції над цілими числами у двійковій системі числення. Теоретичні положення
- •1. Операції над цілими числами у двійковій системі числення. Доповнювальний, прямий і зворотній код.
- •Виконання логічних операцій з цілими числами, представленими в машинних кодах
- •Контрольні запитання
- •Завдання
Лабораторна робота №2 Тема: Переведення чисел. Доповнювальний, прямий і зворотній код. Операції над цілими числами у двійковій системі числення. Теоретичні положення
1. Операції над цілими числами у двійковій системі числення. Доповнювальний, прямий і зворотній код.
Правила виконання арифметичних дій над двійковими числами задаються таблицею1. Правила арифметики в усіх позиційних системах аналогічні.
Таблиця 1. - Правила виконання арифметичних дій над двійковими числами
Двійкове додавання |
Двійкове віднімання |
Двійкове множення |
0+0=0 0+1=1 1+0=1 1+1=10 |
0-0=0 1-0=1 1-1=0 10-1=1 |
0*0=0 0*1=0 1*0=0 1*1=1 |
Додавання двох чисел в двійковій системі можна виконувати стовпцем, складаючи або дві цифри молодшого розряду, або дві цифри чисел, які додаються, в даному розряді і одиниці перенесення з сусіднього молодшого розряду.
Наприклад,
1111101
+ 101101.01
11011.01
-------------------
1001000.10
Числа в двійковій системі віднімаються аналогічно числам в десятковій системі. При відніманні чисел в даному розряді, якщо цифра, що зменшується, менше цифри числа, що віднімається, позичають одиницю з наступного старшого розряду. При цьому одиниця, що позичається із старшого розряду, рівна двом одиницям даного розряду.
Наприклад,
10101.11
- 1011.01
---------------
1010.10
При здійсненні обчислень, звичайно, доводиться мати справу не тільки з цілими невід’ємними числами, але також з від’ємними.
У програмуванні виділяють два типи чисел: беззнакові та знакові. Всі беззнакові числа вважаються невід’ємними, і всі їх розряди використовуються для задання абсолютної величини числа. Так, за допомогою одного байту можна закодувати цілі беззнакові числа від 0 до 255.
Для представлення ж від’ємних чисел слід виділити один біт для знаку. Як правило, це старший біт. Якщо один біт в числі виділяється під його знак, таке число називається знаковим. Як правило, 0 у старшому (крайньому зліва) біті відповідає додатнім числам, а 1 - від’ємним.
Представлення від’ємних чисел залежить від кількості байтів, яка відводиться на число. Для визначеності будемо розглядати однобайтові знакові числа.
Виділяють три основних способи представлення від’ємних чисел:
-
прямий код, який утворюється з коду відповідного додатного числа шляхом встановлення знакового біта в 1;
-
обернений код, який утворюється шляхом заміни значення кожного біта на протилежне;
-
додатковий код, який утворюється шляхом додавання 1 до молодшого біта оберненого коду.
Приклад. Розглянемо число -3. Двійковим еквівалентом відповідного додатного числа 3 є 00000011.
Прямий код. Встановимо знаковий біт в 1 (нагадаємо, що 1 в старшому біті знакового числа сигналізує про його від’ємність). Всі інші біти залишаються без змін. В результаті вийде 10000011.
Обернений код. Замінимо кожний біт на протилежний (1 на 0; 0 на 1); результатом буде 11111100.
Додатковий код. Додамо 1 до оберненого коду; в результаті вийде 11111101. Зверніть увагу, що якщо розглядати послідовність 11111101 як беззнакове, а не як знакове число, вона інтерпретується як додатнє число 253.
Приклад 1. Числа А, –А, С и –С представити в прямому, оберненму (зворотньому), доповнюваному кодах.
А = 30710 = 1001100112 С = 9110 = 10110112
[A]пр = [A]об = [A]дк = 0|000000100110011
[–A]пр = 1|000000100110011
[–A]об = 1|111111011001100
[–A]дк = 1|111111011001100+1 = 1|111111011001101
[C]пр = [C]об = [C]дк = 0|000000001011011
[–C]пр = 1|000000001011011
[–C]об = 1|111111110100100
[–C]дк = 1|111111110100100+1 = 1|111111110100101
Приклад 2. Обчислити: А + B, A – B, –A – B. Нехай А=16010, B=4510.
[A]дк = 0|000000010100000
[–A]дк = 1|111111101100000
[B]дк = 0|000000000101101
[–B]дк = 1|111111111010011
|
А + B |
|
|
A – B |
|
|
–A – B |
+ |
0|000000010100000 |
|
+ |
0|000000010100000 |
|
+ |
1|111111101100000 |
0|000000000101101 |
|
1|111111111010011 |
|
1|111111111010011 |
|||
|
0|000000011001101 |
|
|
0|000000001110011 |
|
|
1|111111100110011 |
Приклад 3. Виконати додавання чисел, представленних в машинних кодах: A+C; –A+C; A+(– C); –A+(– C).
A = 30710 =1001100112 С = 9110 = 10110112
[A]дк = 0|000000100110011
[–A]дк = 1|111111011001101
[C]дк = 0|000000001011011
[–C]дк = 1|111111110100101
|
А + C |
|
|
–A + C |
+ |
0|000000100110011 |
|
+ |
1|111111011001101 |
0|000000001011011 |
|
0|000000001011011 |
||
|
0|000000110001110 |
|
|
1|111111100101000 |
|
А + (– C) |
|
|
–A + (– C) |
+ |
0|000000100110011 |
|
+ |
1|111111011001101 |
1|111111110100101 |
|
1|111111110100101 |
||
|
0|000000011011000 |
|
|
1|111111001110010 |
Зауваження. В ЕОМ операції віднімання, множення, ділення здійснюються за допомогою операції додавання. Наприклад, при відніманні від'ємник записується у доповняльному коді і віднімання заміняється додаванням.
Приклад 4: 23 + 22 = 45
Приклад 5: 23 - 13 = 23 + (-13 ) = 10
(-13)10 = (1 0001101)пр. = (1 1110010)об. = (1 1110011)доп.
Приклад 6: 7 - 13 = 7 + (-13) = -6
Оскільки результат від'ємний (біт знаку містить одиницю), то він представлений у доповняльному коді. Для перевірки правильності виконання операції потрібно перейти до прямого коду, який визначає абсолютне значення результату. Для цього потрібно:
1. відняти від доповняльного кода 1: 11111010дк. - 00000001 = 11111001об.
2. проінвертувати обернений код для переходу до прямого: 10000110пр.
Приклад 7: (- 7 – 13) = (-7) +(-13) = -20
|
|
1 0010100пр. - прямий двійковий код числа ( -20 )10