Зворотний та додатковий коди

Зворотний код 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 з кожної тетради різниці, яка потребує займу. Наприклад: