- •2. Обладнання
- •3. Короткі відомості з теорії
- •3.1. Прямий код.
- •3.2. Обернений код.
- •3.4. Додавання чисел, записаних в оберненому коді.
- •3.3. Доповнений код.
- •1. Додатні числа в прямому, оберненому та доповненому кодах мають однакову форму запису.
- •3.3. Переповнення розрядної сітки.
- •4. Порядок виконання роботи.
- •5. Контрольні запитання.
Міністерство освіти і науки, молоді та спорту України
Прикарпатський національний університет
імені Василя Стефаника
Кафедра радіофізики і електроніки
Лабораторна робота №2
Способи представлення від'ємного числа. Прямий, обернений та доповнений коди.
Івано-Франківськ – 2011
1. Мета роботи
Вивчити основні способи представлення числа зі знаком, а також правила виконання арифметичних дій над числами в прямому, оберненому та доповненому кодах.
2. Обладнання
-
3. Короткі відомості з теорії
Над числами, записаними в двійковій системі можна здійснювати арифметичні дії додавання, віднімання, множення тощо. З шкільного курсу математики відомо, що віднімання від числа А числа В можна представити в вигляді додавання до числа А від'ємного числа -В: А - В = А + (-В).
З іншої сторони, більшість задач математики неможливо вирішити без використання від'ємних чисел. Виникає питання: яким чином в комп'ютері можна записати від'ємне число?
Оскільки комп'ютер оперує тільки з двійковими числами, то для запису знаку відводиться додатковий "знаковий" розряд. Цей розряд, є найстаршим в записі числа. Знак "+" позначається нулем, а знак "-" - одиницею. Записуючи двійкові числа на папері будемо відділяти знаковий розряд від цифрових розрядів крапкою. Однак в пам'яті ЕОМ число записується без виділення додаткових розрядів на крапку (чи кому). Наприклад:
- додатне число,
- від'ємне число.
Існують три основні способи запису числа зі знаком: прямий, обернений та доповнений коди.
3.1. Прямий код.
Прямий код відповідає звичайному запису числа зі своїм знаком.
Числа в прямому коді можна представити в формі:
Апр = (2.1)
Впр = (2.2)
Таким чином, число 13,75d записується як Апр = 0.1101,11b, а число -13,75d - як Впр = 1.1101,11b. Нуль в прямому коді має два зображення:
0пр = 0.00...00 = +0;
0пр = 0.00...00 = -0.
Арифметичні операції в прямому коді виконуються за звичайними правилами двійкової арифметики, однак їх не завжди можна застосовувати до знакового розряду числа:
Приклади 2.1 та 2.2.
+14d = 0.001110b -14d = 1.001110b
+45d = 0.101101b -45d = 1.101101b
+59d = 0.111011b +59d = 0.111011b
В другому випадку появляється одиниця перенесення в наступний старший розряд, однак, якщо розрядів комірки пам'яті недостатньо, то він буде втраченим, а результат - некоректним.
Отже, в випадку додавання чисел в прямому коді не можна розглядати знаковий розряд як звичайний цифровий.
Прямий код застосовується в ЕОМ для введення чи виведення інформації, а також для зберігання чисел в запам'ятовуючих пристроях. Однак прямий код незручний для реалізації арифметичних дій в ЕОМ, оскільки вимагає від арифметичного пристрою виконання як операції додавання, так і операції віднімання. Застосування оберненого або доповненого кодів позволяє суттєво спростити арифметичний пристрій за рахунок заміни операції віднімання операцією додавання.
3.2. Обернений код.
Загальна ідея представлення від'ємних чисел в оберненому та доповненому кодах полягає у введенні спеціального розряду з від'ємним ваговим коефіцієнтом. Число А записується в вигляді
(2.3)
Коефіцієнт С > 0 визначає діапазон зображуваних чисел. Введення розряду з від'ємною вагою дозволяє замінити операцію віднімання операцією алгебраїчного додавання чисел з різними знаками. В цьому випадку арифметичні дії здійснюються на усіма розрядами, включаючи знаковий.
Для утворення оберненого коду коефіцієнт С в формулі (2.3) вибирається рівним максимальному додатному числу, яке може бути записано в комірку з n цілими та m дробовими розрядами, тобто
Таким чином, двійкове число в оберненому коді записується в вигляді
Aоб (2.4)
Використовуючи (1.2) можна знайти значення чисел, записаних в оберненому коді:
Аоб = 0.0110,01b = 0∙(-24+2-2)+0∙23+1∙22+1∙21+0∙20+0∙2-1+1∙2-2 = 6,25d
Воб = 1.0110,01b = 1∙(-24+2-2)+0∙23+1∙22+1∙21+0∙20+0∙2-1+1∙2-2 = -9,50d
Додатні числа в прямому і оберненому кодах мають однакову форму запису. Для того, щоби знайти правило переходу від прямого коду до оберненого прирівняємо праві частини співвідношень (2.2) та (2.4).
(2.5)
враховуючи, що для від'ємних чисел , а
(2.6)
як сума членів геометричної прогресії, можна записати рівняння (2.5) в вигляді
(2.7)
Звідси виходить, що для будь-яких і виконується рівність , або тобто якщо , то і навпаки.
Таким чином, для отримання оберненого коду від'ємного числа необхідно в розряд з від'ємною вагою записати одиницю, а у всіх інших розрядах прямого коду інвертувати значення розрядів. Аналогічно отримують прямий код із оберненого.
А = -10110,1011b; Апр = 1.10110,1011b Аоб = 1.01001,0100b
Увага! В оберненому коді від'ємного числа нулі, записані в кінці числа і на початку (крім знакового розряду), відкидати не можна, оскільки вони значущі. Якщо для додатних чисел, записаних в будь-якому коді можна дописувати чи відкидати нулі справа та зліва, то для від'ємних чисел в оберненому коді так поступати можна тільки з одиницями. Це означає, що числа 1.11...11010,1011...11bоб та 1.010,10bоб є тотожні.
Нуль в оберненому коді також має два значення:
(+0)об = 0.00...00,00...00bоб = 0∙(-2n+2-m)+0∙2n-1+...+0∙20+0∙2-1+...+0∙2-m = 0,00
(-0)об = 1.11...11,11...11bоб = 1∙(-2n+2-m)+1∙2n-1+...+1∙20+1∙2-1+...+1∙2-m = 0,00
Від'ємні і додатні числа, записані в оберненому коді, симетрично розміщені відносно нуля.
Визначимо діапазон чисел, які можна представити в оберненому коді, використовуючи k = n+m+1 розрядів, де n - кількість цілих, а m - кількість дробових розрядів + один знаковий.
Максимальне додатне число 0.11...11,11...11об згідно з (2.4):
,
аналогічно мінімальне від'ємне число 1.00...00,00...00об:
.
Якщо m = 0, тобто дробові розряди відсутні, то діапазон чисел, які можна представити за допомогою k розрядів, становить від до (всього чисел, враховуючи два нулі).