Загальні відомості щодо теорії лишкових класів
Код умовних лишків (ЛУ – код) відноситься до узагальнених кодів, тобто до кодів, коли певна група двійкових символів розглядаються як один символ, чи коли один символ є багаторозрядним.
Теоретичною основою ЛУ – коду є теорія лишкових класів. З теорії лишкових класів відомо, що будь-яке ціле число можна представити у вигляді набору лишків від ділення цього числа на набір взаємно простих чисел, які мають назву основ системи числення, – pi, де і = 1, 2 ., т, т – кількість таких основ. Вибір величини т здійснюється з умови, які викладені нижче. Тоді будь-яке число А представляється як:
А = α1, α2 ., αт, (1)
де:
αi =А – [А/pi]∙pi,
а знак [А/pi] означає операцію обрахування цілої частини від дробового числа А/pi.
При цьому між числами А і їх представленням (1) існує взаємна однозначна відповідність, якщо і числа і результати операцій над ними є цілими числами і не перевищують величини так званого робочого діапазоні:
.
У цьому виразі величина Р [0, P) – діапазон представлення або робочий діапазон чисел. Звернемо увагу на те, що у виразі (1) αі є групою двійкових розрядів, кількість яких не перевищує розрядності відповідної основи pi.
Приклад. Нехай потрібно представити число А = 7 в системі лишкових класів із основами p1 =2, p2 =3, p3 =5. В цьому разі . Тоді
α1 = 7 – [7/2]∙2 = 1, α2 = 7 – [7/3]∙3 = 1, αт = 7 – [7/5]∙5 = 2 і тоді це число запишеться як:
А = 7 = 1, 1, 2,
якщо ж В = 3, то це число запишеться як:
В = 3 = 1, 0, 3.
В системі лишкових класів усі арифметичні операції над числами виконуються шляхом паралельних операцій над кожним із лишків по відповідним модулям. Будемо ці операції, наприклад, операції над числами А та В по модулю d позначати як: . За рахунок розпаралелювання операцій загальна швидкість їх виконання значно перевищує швидкість операцій над числами в позиційних системах числення.
Операції додавання та віднімання виконуються за правилами:
,
Операції множення виконуються за правилами:
Операції ділення може бути виконаною при умовах, якщо, по-перше, в лишках, якими представлений знаменник відсутні такі, що дорівнюють нулю (на нуль ділити неможливо), а по-друге, величина А ділиться на В націло. В цих випадках ділення здійснює виконуються за правилами:
,
де d = 0, 1, 2, …, поки не буде одержано ціле значення С.
Приклад. Здійснити арифметичні операції над числами А = 7 = 1, 1, 2 та
В = 3 = 1, 0, 3. Тоді
А + В =7 + 3 = 10 = 1 + 1
2,
1 + 0
3,
2 + 3
5 = 0, 1, 0,
А – В =7 – 3 = 4 = 1 – 1
2,
1 – 0
3,
2 – 3
5 = 0, 1, 4,
А · В =7 · 3 = 21 = 1 · 1
2,
1 · 0
3,
2 · 3
5 = 1, 0, 1.
Спроба ж розподілити А на В буде невдалою, тому що, по-перше, результат ділення не є цілим числом, а, по-друге, по основі 3 буде ділення на нуль, що є не припустимим. Це є певним недоліком системи числення, який долається за рахунок застосування спеціальних програмних методів ділення чисел. З урахуванням того, що сама по собі операція ділення в позиційних системах числення є дуже довгою (потребує багато мікрооперацій), а швидкість операцій в системі лишкових класів є суттєво вищою, загальний час виконання ділення може бути навіть меншим ніж при використанні позиційних систем числення.