Зворотний та додатковий коди
Зворотний код n-розрядного числа А з основою h доповнює його до максимально можливого значення hn-1, тобто А0 = hn-1-А. При цьому цифра кожного розряду зворотного коду A0 доповнює відповідну цифру початкового числа А до найбільшої цифри h-1 (для десяткового числа - до 9). Додатковий
код числа А отримується як різниця А0 = hn - А, тобто він є більшим від зворотного коду на 1.
Суму цілих двійкових чисел з урахуванням знаків можна звести до суми їх додаткових або зворотних кодів. Зворотний код для від'ємного числа отримується прямою заміною 0 на 1 та 1 на 0 в усіх розрядах. Щоб подати число в додатковому коді, достатньо до зворотного коду додати 1.
Сума у додатковому коді знаходиться за правилами двійкової арифметики розряд за розрядом, враховуючи знакові розряди. Можливе перенесення із знакового розряду. Наприклад:
Для алгебраїчної суми можна використати і зворотний код. Наприклад:
Віднімання у додатковому та зворотному кодах здійснюються додаванням методом заміни знаку ( відповідно і коду) від'ємника.
2.1.4. Двійково - десяткові коди
Для подання інформації у десятковій системі числення і виконання операцій над десятковими числами, в цифрових пристроях використовується двійково-десяткове кодування, при якому кожна десяткова цифра подається групою двійкових цифр. Кількість бітів у таких групах чітко фіксується (їх повинно бути не менше чотирьох) із збереженням всіх лівих нулів розрядів. На практиці використовуються декілька різновидів двійково-десяткових кодів (табл.2.2).
Найбільш поширеним та використовуваним вважається код прямого заміщення, в якому кожна цифра десяткового числа замінюється відповідним чотири-розрядним двійковим числом. Його друга назва - код 8421 відображує значення вагових множників, що приписуються відповідним бітам в групі, в зв’язку з чим він називається також зваженим кодом. Зручність цього коду проявляється при машинному перетворенні з десяткової системи в двійкову і навпаки, а також при додаванні на звичайних двійкових суматорах, завдяки його адитивності (сума кодів двох цифр представляє код суми).
Надлишковість тетради, що допускає 16 кодових комбінацій, дозволяє створювати і інші варіанти двійково-десяткових кодів. Один з них - код 2421. Його особливість в тому, що заміна в кодуючій тетраді нулів на одиниці, а одиниць на нулі, перетворює кожну десяткову цифру А в 9-А, тобто одержуємо обернений код. Для перетворення його в додатковий код достатньо добавити одиницю. Коди з такими властивостями називаються самододатковими. Вони використовуються при виконанні арифметичних операцій над десятковими числами в оберненому або додатковому коді.
Різновиди двійково-десяткових кодів
Таблиця 2.2.
Десят-кові цифри | Двійкові коди десяткових цифр | |||
з залишком 3 | 2 з 5 | |||
Самододатковим являється і код з надлишком 3, який отримується додаванням 310 = 00112 до кожної цифри коду прямого заміщення. Як і код 2421, він зручний для виконання операцій над десятковими числами. При цьому легко визначається перенесення, так як сума двох додатків, кожний з яких береться з надлишком 3, отримується з надлишком 6, що виключає зайві кодові комбінації (для отримання правильного коду суми, від результату віднімається 3). Але цей код на відміну від кодів 8421 і 2421 не являється зваженим, чому мало зручний для перетворення чисел з однієї системи в іншу. Використовуються також двійково-десяткові коди, в яких кодуючі тетради доповнюються надлишковими бітами для того, щоб використовувати цю надлишковість для надання кодам специфічних властивостей, що використовуються для виявлення помилок і тим самим для підвищення надійності обчислювальних систем.
Так, в коді 2 з 5 кожна десяткова цифра подається п’ятьма розрядами, з яких тільки в двох є одиниці, що дозволяє виявити поодинокі помилки.
Операції над десятковими цифрами виконуються за допомогою доповненої двійкової арифметики. Так, при додаванні двох чисел в коді прямого заміщення 8421 необхідно добавити корегуючий елемент 610= 01102 до кожної тетради, в якій в процесі додавання отримана цифра > 9 або виникло перенесення в наступну тетраду. Наприклад:
При відніманні чисел в коді 8421 корекція зводиться до віднімання 610= 01102 з кожної тетради різниці, яка потребує займу. Наприклад: