Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна 2_1_семестр.doc
Скачиваний:
1
Добавлен:
18.08.2019
Размер:
247.81 Кб
Скачать

Міністерство освіти і науки, молоді та спорту України

Прикарпатський національний університет

імені Василя Стефаника

Кафедра радіофізики і електроніки

Лабораторна робота №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 розрядів, становить від до (всього чисел, враховуючи два нулі).