Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
20
Добавлен:
08.11.2018
Размер:
1.15 Mб
Скачать

1.11 Прямий, зворотний і додатковий коди

У персональних комп'ютерах з метою спрощення виконання арифметичних операцій застосовують спеціальні коди для представлення чисел. За допомогою цих кодів спрощується визначення знака результату операції. Операція віднімання (або алгебраїчного додавання) чисел зводиться до арифметичного додавання двійкових кодів, полегшується вироблення ознак переповнення розрядної сітки. У результаті спрощуються пристрої персональних комп'ютерів, що виконують арифметичні операції.

Для представлення чисел зі знаком у персональних комп'ютерах можуть застосовуватися прямий, зворотний і додатковий коди. У IBM PC застосовуються прямий і додатковий коди.

Ознакою представлення позитивних чисел є наявність 0 у старшому (знаковому) розряді. Ознакою представлення негативних чисел є наявність 1 у знаковому розряді.

Позитивні числа записуються тільки в прямому коді, у знаковому розряді 0.

Приклад: 3(10) = 0.0000011(2)

83(10) = 0.1010011(2)

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

Зворотний код негативного числа утвориться порозрядовою заміною в числі, представленому в прямому коді, 0 на 1 і 1 на 0 (інвертуванням).

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

+0 = 0.0000000

- 0 = 1.1111111

Додатковий код утворюють у такий спосіб: число записують у зворотному коді, а потім до молодшого розряду додається 1 .

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

0.0000000

Приклад 1:

Запис чисел будемо робити по восьми розрядній сітці

+83(10) прямій код 0.1010011

+

- 83(10) зворотний код 1.0101100

1

- 83(10) додатковий код 1.0101101

Приклад 2:

+3(10) прямій код 0.0000011

+

- 3(10) зворотний код 1.1111100

1

- 3(10) додатковий код 1.1111101

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

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

Приклад 1: Алгебраїчне додавання з використанням зворотного коду

а) 3(10) - 83(10) = - 80(10)

+

0.0000011 прямий код 3(10)

1.0101100 зворотний код - 83(10)

1.0101111 алгебраїчна сума негативна,

отже, вона представлена в зворотному коді

Інвертуємо біти:

0.1010000 = 64+16 = 80 – модуль суми 80

б) 83(10) - 3(10) = 80(10)

+

0.1010011 прямий код 83(10)

1.1111100 зворотний код - 3(10)

0.1001111

+1 циклічний перенос

0.1010000 алгебраїчна сума позитивна,

отже, вона представлена в прямому коді +80(10)

Приклад 2: Алгебраїчне додавання з використанням додаткового коду

а) 3(10) - 83(10) = - 80(10)

+

0.0000011 прямий код 3(10)

1.0101101 додатковий код - 83(10)

1.0110000 алгебраїчна сума негативна, отже вона представлена в додатковому коді.

Переходимо до прямого коду, для цього інвертуємо біти і додаємо 1 до молодшого

розряду:

+

0.1001111

1

0.1010000 модуль отриманої суми 80(10)

б) 83(10) - 3(10) = 80(10)

+

0.1010011 прямий код 83(10)

1.1111101 додатковий код - 3(10)

1 0.1010000 суму коректувати не потрібно, тому що при

використанні додаткового коду одиниця

переносу зі знакового розряду ігнорується.

Сума позитивна, отже, представлена у прямому коді.

Результат +80(10)