Загальні відомості щодо теорії лишкових класів


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

Теоретичною основою ЛУ – коду є теорія лишкових класів. З теорії лишкових класів відомо, що будь-яке ціле число можна представити у вигляді набору лишків від ділення цього числа на набір взаємно простих чисел, які мають назву основ системи числення, – 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 + 12, 1 + 03, 2 + 35 = 0, 1, 0,

А – В =7 – 3 = 4 = 1 – 12, 1 – 03, 2 – 35 = 0, 1, 4,

А · В =7 · 3 = 21 = 1 · 12, 1 · 03, 2 · 35 = 1, 0, 1.

Спроба ж розподілити А на В буде невдалою, тому що, по-перше, результат ділення не є цілим числом, а, по-друге, по основі 3 буде ділення на нуль, що є не припустимим. Це є певним недоліком системи числення, який долається за рахунок застосування спеціальних програмних методів ділення чисел. З урахуванням того, що сама по собі операція ділення в позиційних системах числення є дуже довгою (потребує багато мікрооперацій), а швидкість операцій в системі лишкових класів є суттєво вищою, загальний час виконання ділення може бути навіть меншим ніж при використанні позиційних систем числення.