Найбільш широке розповсюдження в обчислювальній техніці отримали двійково-десяткові СЧ, в яких десяткові цифри записують як 4-х розрядні двійкові числа – двійкові тетради. Дослідження і досвід розробки десяткових обчислювальних пристроїв показали, що найбільш ефективним є використання двійково-десяткових кодів (ДДК), які задовольняють умові єдності і мають властивості адитивності, впорядкованості, парності, доповняльності і зваженості.
Умова єдності полягає в тому, що між кожною цифрою xiє{0,…,p-1} і комбінацією двійкових цифр повинно бути встановлена взаємно-однозначна відповідність. Для цього кількість двійкових розрядів для подання цифри xi повинна бути не менше
Можлива кількість способів двійкового кодування для СЧ з основою p дорівнює величині
Властивість адитивності полягає в тому, що ДДК суми десяткових цифр можна отримати як суму ДДК доданків, ця властивість значно спрощує виконання арифметичних операцій.
Властивість впорядкованості.
Властивість впорядкованості полягає у виконанні умови:
якщо xi<xi+1
то Ψ(xi)<Ψ(xi+1) (10)
де, Ψ(xi) – двійковий код цифри xi.
Наявність впорядкованості ДДК необхідна для реалізації логічних операцій.
Властивість парності.
Властивість парності ДДК полягає в тому, що всім парним десятковим цифрам відповідають або тільки парні, або тільки не парні двійкові коди. Аналогічно для непарних десяткових цифр.
Ця властивість спрощує виконання операцій множення, діленні і округлення.
Суть властивості доповняльності ДДК полягає в тому, що сума двійкового коду будь-якої десяткової цифри xi та її зворотного двійкового коду повинна дорівнювати коду цифри 9. У загальному вигляді цю властивість можна записати таким чином
де – зворотній двійковий код цифри xi.
Ця властивість необхідна для виявлення переносу у старший розряд, а також для формування зворотного і доповняльного кодів при десятковому додаванні – відніманні.
ДДК називають зваженим, якщо в кожному з n розрядів двійкового подання , десяткової цифри X поставлені у відповідність ваги
, тобто
Використання зважених ДДК полегшує переведення чисел з однієї СЧ в іншу. У табл..2 наведено найбільш розповсюджені і цифровій схемотехніці ДДК.
Таблиця 2.
Десяткове
число |
Код 8421 | Код 7421 | Код 5421 | Код Айкена 2421 | Код 3321 | Код з «надлишком 3» (N+3) | Доповнення до 9 (9-N) 8421 | Доповнення до 10 | Код 3N+2 (8421) | Код «2 з 5» |
0 | 0000 | 0000 | 0000 | 0000 | 0000 | 0011 | 1111 | 1010 | 00010 | |
1 | 0001 | 0001 | 0001 | 0001 | 0001 | 0100 | 1000 | 1011 | 00101 | 00011 |
2 | 0010 | 0010 | 0010 | 0010
1000 |
0010 | 0101 | 0111 | 1100 | 01000 | 00101 |
3 | 0011 | 0011 | 0011 | 0011
1001 |
0100
1000 |
0110 | 0110 | 1101 | 01011 | 00110 |
4 | 0100 | 0100 | 0100 | 0100
1010 |
1001
0101 |
0111 | 0101 | 1110 | 01110 | 01001 |
5 | 0101 | 0101 | 1000
0101 |
0101
1011 |
0110
1010 |
1000 | 0100 | 1111 | 10001 | 01010 |
6 | 0110 | 0110 | 0110
1001 |
0110
1100 |
1100
0111 1011 |
1001 | 0011 | 10000 | 10100 | 01100 |
7 | 0111 | 1000
0111 |
0111
1010 |
0111
1101 |
1101 | 1010 | 0010 | 10001 | 10111 | 10001 |
8 | 1000 | 1001 | 1011 | 10011 | 1110 | 1110 | 0001 | 10010 | 11010 | 10010 |
9 | 1111 | 1010 | 1100 | 1100 | 1111 | 1111 | 0000 | 10011 | 11101 | 10100 |
У позначеннях кодів 8421, 7421, 5421, 2421, 3321 (табл..2) вказано десяткову вагу φi двійкової одиниці, xi відповідного розряду.
1). Код 8421. Цей код є найбільш розповсюдженим в обчислювальній техніці, оскільки кожна десяткова цифра кодується відповідним 4-х розрядним двійковим числом. Цей код має всі властивості ДДК, крім властивості доповняльності. Це ускладнює формування переносів з молодшої тетради (з молодшого десяткового розряду) у старшу і перехід до зворотних і доповняльних кодів для десяткових чисел, які полегшують виконання алгебраїчного додавання (23222120 23222120). Отже код 8421 не є само доповняльним, тобто інверсія його двійкових цифр не дає двійкового коду доповнення десяткової цифри до 9-ти.
Переваги при машинному переведенні і двійковому підсумовуванні.
2). Коди 7421, 5421, 3321, 2421 – це приклади ДДК зі штучним порядком ваг. Особливістю зважених ДДК зі штучним порядком ваг є відсутність взаємно однозначної відповідності між десятковими цифрами та їх двійковими кодами. Будь – який двійковий код відповідає одній десятковій цифрі але десяткова цифра може бути подана декількома двійковими кодами (табл..2). Для виконання умови єдності кодування за замовчуванням вважають деякі правильні двійкові коди десяткових цифр забороненими.
3). Код 2421 – ДДК зі штучним порядком ваг. Він має всі властивості, крім властивості адитивності, оскільки старший розряд тетради має штучну вагу 2. Цей код є само доповняльним і використовується при виконанні арифметичних операцій над десятковими числами у зворотному або доповняльному коді.
4). Код з «надлишком» 3. Не має властивості зваженості, оскільки отримується в результаті додавання двійкового коду цифри 3 (0011) до кожної цифри коду прямого заміщення (N+3). Код є не зручним для перетворення з однієї СЧ в іншу але він зручний для виконання арифметичних операцій над десятковими числами. При цьому легко отримати перенос, оскільки сума двох доданків кожне з яких беруть з надлишком 3 отримується з надлишком 6, що виключає зайві кодові комбінації (для отримання правильного коду суми від результату віднімається 6) (потренуватись).
5). Коди «доповнення до 9», «доповнення до 10». Коди використовуються для виконання додавання, віднімання десяткових чисел. Перевага цих кодів полягає в тому, що код нуля містить одиницю, що дозволяє легко відрізнити наявність коду 0 від пропадання коду цифри.
6). Код «3N+2». В ньому кожна десяткова цифра записується 5-ма розрядами. Цей код є корегуючим кодом і використовується для передачі кодів, оскільки дозволяє виявити найбільш вірогідні помилки при передачі інформації. Корегуючи ми називають ДДК, в яких тетради доповнюються надлишковими бітами (розрядами) з тим щоб використовувати цю надлишковість для надання кодам специфічних властивостей, які дозволяють виявляти помилки і збільшувати надійність обчислювальних засобів.
7). Корегуючий код, в якому кожна десяткова цифра подається 5-ма розрядами, в який тільки 2 містять одиницю. Цей код отримують з коду 7421 шляхом додавання праворуч доповняльного розряду з вагою 0. Цей розряд записують двійкову цифру, яка забезпечує загальну кількість одиниці, яка дорівнює 2-м (крім коду десяткового 0) (табл..2).
Код виявляє одиночну помилку (помилку в одному розряді) типу 0 → 1, або 1 → 0. Не виявляє подвійні помилки типу 0 → 1 і 1 → 0, або 1 → 0 і 0 → 1.
Серед незважених ДДК можна відмітити коди спеціального призначення, в яких перехід до суміжного числа супроводжується змінами тільки в одному розряді (коди з обмінною одиницею).
Код Джонсона є завадостійким кодом: в ньому перехід до наступного числа виконується послідовною заміною нулів на одиниці починаючи з розрядів праворуч, а після встановлення в усіх розрядах одиниць – заміною одиниць на нулі (табл. 3).
Таблиця 3
Десяткове число | Двійковий код | Код Джонсона (код для передачі) | Код Грея | Одиничні коди | |
Одиничний нормальний код | Одиничний позиційний код | ||||
0
1 2 3 4 5 6 7 8 9 |
0000
0001 0010 0011 0100 0101 0110 0111 1000 1001 |
00000
00001 00011 00111 01111 11111 11110 11100 11000 10000 |
0000
0001 0011 0010 0110 0111 0101 0100 1100 1101 |
1000000000
0100000000 0110000000 0111000000 0111100000 0111110000 0111111000 0111111100 0111111110 0111111111 |
1000000000
0100000000 0010000000 0001000000 0000100000 0000010000 0000001000 0000000100 0000000010 0000000001 |
Сусідні коди – коди які відрізняються тільки в одному розряді.
Кількість розрядів на які відрізняються коди називається – відстанню Хеммінга.
Код Грея.
В АЦП широко використовується код Грея, який також називають циклічним або рефлексно-двійковим кодом. Перевага коду Грея: він дозволяє скоротити час перетворення, спростити кодуючи логіку, підвищити ефективність захисту від небажаних збоїв при переходах вихідного коду. Недоліки коду Грея: складність при виконанні арифметичних операцій і ЦА (цифро-аналогових) перетворень.
Правило переведення ДДК у код Грея: старші розряди співпадають, а для будь-якого k-го розряду коду Грея виконується умова
де xk, xk+1 – відповідний і наступний розряди двійкового коду;
– сума за модулем 2, яка дорівнює арифметичній сумі без переносу у старший розряд.
0+0=0
0+1=1
1+0=1
1+1=0
Графічно правило (12) можна представити таким чином (рис. 1а).
Двійковий код
↓
Код Грея
Рис. 1а
Двійковий код
↑
Код Грея
Рис. 1б
Правило переведення з коду Грея в ДДК: старші розряди співпадають, а для будь-якого k-го двійкового розряду виконується умова:
Графічно прало (13) представлено на рисунку 1б.
Перетворення цифр коду Грея можна сформулювати так: цифра залишається без зміни, якщо кількість попередніх одиниць є парною і інвертується якщо кількість є непарною. Отже код Грея утворюють послідовність двійкових чисел в якій два будь-яких суміжних числа (перше число 0 і останнє 15 також вважається суміжнім) відрізняються значенням цифри тільки в одному розряді, тобто на один біт. Таким чином відстань Хеммінга дорівнює одиниці.
Подання десяткових чисел.
Загально прийнятим є двійково-десяткове кодування десяткових чисел: кожна десяткова цифра перетворюється 4-х розрядне двійкове число (код 8421). Дві десяткові цифри таким чином пакуються в один байт. Двійкові значення від 1010 до 1111 ніколи не використовуються (для десяткових цифр це заборонені комбінації). Недолік – неефективне використання пам’яті. Наприклад найбільше десяткове число, яке можна зафіксувати в одному байті 99, двійкове число – 255.