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

3.4. Додавання чисел, записаних в оберненому коді.

Оскільки додатні числа в прямому та оберненому кодах мають однакову форму запису, то вони додаються однаково.

Розглянемо додавання двох чисел з різними знаками. Нехай число А додатне, а число В - від'ємне, і їх можна записати, як:

Аоб = 

Воб = 

Тоді їхню суму можна записати, як

Соб = 

або

Соб =  (2.8)

Значення суми можна знайти за допомогою звичайних правил додавання. Можливі два випадки:

1.

Такій нерівності відповідає |А| < |В|, отже сума С - від'ємна ( ), а коефіцієнти можна визначити з рівняння

(2.9)

Таким чином, в цьому випадку також справедливе звичайне правило додавання чисел:

Приклад 2.3.

+6,50d = 0.0110,10bоб

-10,00d = 1.0101,11bоб

-3,50d = 1.1100,01bоб

2. (2.10)

Нерівність означає, що |А| ≥ |В|, тобто С ≡А - В≥ 0. В даному випадку появляється одиниця перенесення в n-ний розряд числа який відповідає за його знак, а отже можна записати

Тоді співвідношення (2.8) набуває вигляду

Соб =  (2.11)

Це означає, що для отримання оберненого коду суми в розряд з від'ємною вагою слід записати нуль (оскільки А - В є число додатне), а для того, щоби отримати інші розряди числа, необхідно до результату формального додавання добавити одиницю молодшого розряду (2-m). Одночасно появляється одиниця перенесення із розряду з від'ємною вагою. Саме цю одиницю необхідно добавити до молодшого розряду. Така операція, коли одиниця перенесення в n+1 розряд насправді додається до m-го називається циклічним перенесенням.

Вище сказане ілюструє такий приклад 2.4:

+13,50d =  0.1101,10bоб

-5,00d =  1.1010,11bоб

10.1000,01

|–––––→1

+8,50d =  0.1000,10bоб

Аналогічним чином можна показати, що у випадку додавання двох від'ємних чисел також слід виконувати операцію циклічного перенесення:

Приклад 2.5.

-5,00d =  1.1010,11bоб

-3,75d =  1.1100,00bоб

11.0110,11

|–––––→1

-8,75d =  1.0111,00bоб

Таким чином, в випадку додавання чисел, записаних в оберненому коді, завжди слід виконувати операцію циклічного перенесення, однак, якщо перенесення в n+1 розряд рівне нулю, то таке циклічне перенесення аналогічне його відсутності. В випадку реалізації операції додавання чисел в ЕОМ, операція циклічного перенесення призводить до ускладнення схеми суматора та збільшенню часу виконання операції додавання.

3.3. Доповнений код.

Ідея доповненого коду виникає в зв'язку з бажанням позбутися операції циклічного перенесення. Для цього встановити коефіцієнт С в формулі (2.3) рівним -2n. Тоді числа в доповненому коді будуть записуватись як

Aдоп  (2.12)

Порівнюючи (2.4) та (2.12) можна зробити наступні висновки:

1. Додатні числа в прямому, оберненому та доповненому кодах мають однакову форму запису.

2. Від'ємні числа в оберненому та доповненому кодах відрізняються на одиницю молодшого розряду. Для утворення доповненого коду від'ємного числа необхідно записати це число в оберненому коді та додати до нього одиницю молодшого розряду:

Приклад 2.6.

А = +9,625d → 0.1001,101bпр → 0.1001,101bоб → 0.1001,101bдоп

В =  -9,625d → 1.1001,101bпр → 1.0110,010bоб

+ 1

1.0110,011bдоп

Перевіримо А + В ≡ 0:

+9,625d → 0.1001,101bдоп

-9,625d → 1.0110,011bдоп

0,0 → 0.0000,000bдоп

Для утворення прямого коду від'ємного числа з доповненого коду навпаки слід відняти одиницю молодшого розряду, а отриманий результат (обернений код) інвертувати (замінити нулі одиницями, а одиниці нулями). Однак даний метод переведення незручний для використання в ЕОМ, оскільки містить операцію віднімання. Тому для знаходження прямого коду з доповненого достатньо утворити доповнений до нього код:

Приклад 2.7.

-9,625d = 1.0110,011bдоп → (1.1001,100bдоп)об

+ 1

(1.1001,101bдоп)доп = 1.1001,101bпр

Нуль в доповненому коді має єдине представлення, оскільки

Приклад 2.8.

(+0)доп = 0.00...00,00...00b

(-0)доп = 1.11...11,11...11bоб

+ 1

0.00...00,00...00bдоп≡(+0)доп

Діапазон чисел, які можна представити в доповненому коді, дещо інший, ніж для оберненого коду. Максимальне додатне число співпадає в цих кодах. Згідно з (2.12) 0.11...11,11...11доп :

,

Мінімальне від'ємне число 1.00...00,00...00доп:

.

Це означає, що від'ємних чисел на одне більше ніж додатних. Причиною цього є єдине представлення нуля в доповненому коді на відміну від двох нулів в оберненому коді.

Якщо m = 0, тобто дробові розряди відсутні, то діапазон чисел, які можна представити за допомогою k розрядів, становить від до (всього чисел, враховуючи один нуль).

Додавання в доповненому коді здійснюється згідно правил звичайного додавання двійкових чисел, розглядаючи знакові розряди як звичайні цифрові. В випадку появи одиниці перенесення із знакового розряду її слід відкинути, тобто циклічне перенесення відсутнє.

Приклад 2.9.

+13,50d = 0.1101,10bпр =  0.1101,10bоб =  0.1101,10bдоп

-5,00d = 1.0101,00bпр =  1.1010,11bоб =  1.1011,00bдоп

10.1000,01

|–––––→1

+8,50d = 0.1000,10bпр =  0.1000,10bоб = 10.1000,10bдоп

↓відкинути

Порівнявши способи представлення чисел в різних кодах, можна зробити наступні висновки:

1. В прямому коді множення та ділення виконуються простіше, ніж в інших кодах, однак він незручний для виконання операції алгебраїчного додавання, оскільки обчислювальний пристрій ЕОМ повинен вміти як додавати, так і віднімати.

2. Переведення чисел з прямого в обернений легко реалізувати, оскільки числа зберігаються за допомогою лінійки тригерів (так званий регістр), кожен із яких має як звичайний, так і інверсний вихід. Недоліком оберненого коду є необхідність виконання додаткової операції циклічного перенесення.

3. В доповненому коді простіше, ніж в інших виконується операція алгебраїчного додавання, оскільки відсутня операція циклічного перенесення. В доповненому коді нуль має єдине представлення.

В сучасних мікропроцесорах використовуються всі види кодування двійкових чисел.

Увага! Прямий, обернений та доповнений коди мають зміст тільки в двійковій системі числення і не можуть бути застосовані до чисел в вісімковій та шістнадцятковій системах числення.