Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АИС_лекц_ЗАО.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.37 Mб
Скачать

5.5.2. Способи перетворювання кодів

Перетворення цілих чисел К з однієї системи числення з основою m в іншу систему числення з основою М можна робити наступними способами.

1-й спосіб. Розподіл числа К на М за допомогою арифметики з основою m. Цифрами числа К в системі числення з основою М будуть залишки від розподілу. Зручно користуватися цим способом при переведенні з 10-вої системи числення (m=10), тому що використовується 10-ва арифметика.

Наприклад: К=7110; 108.

71/8 = 8 залишок 7 = ао; 8/8 = 1 залишок 0 = а1; 1/8=0 залишок 1 = а2 . К=1078.

2-й спосіб. Множення цифр числа К на степені m за допомогою арифметики основи М, тобто обчислення значення багаточлена:

К=аn-1· mn-1n-2· mn-2+…... +а1· m+a0.

Зручно користуватися при переведенні в 10-ву систему числення з інших систем (використовується 10-ва арифметика).

Наприклад: К=10001112; 210.

К=26+22+21+20=7110.

3-й спосіб. Легко перетворювати числа із системи числення з основою m=2 у системи числення з основою М=2Р і навпаки. Звичайно, якщо Р=3, то це вісімкова система числення; якщо Р=4, то це 16-рікова система числення. Вони використовуються при опрацюванні даних на ЕОМ. Для цього потрібно запам'ятати таблиці двійкового запису 8- і 16-рікових цифр.

Таблиця 31

цифра

двійковий запис

цифра

двійковий запис

0

0 000

8

1000

1

0 001

9

1001

2

0 010

A(10)

1010

3

0 011

B(11)

1011

4

0 100

C(12)

1100

5

0 101

D(13)

1101

6

0 110

E(14)

1110

7

0 111

F(15)

1111

Для перетворення необхідно об'єднати відповідним чином розряди двійкового числа.

Наприклад: 4716=0100 01112; 001 000 1112=1078.

Висновок: на фізичному рівні в ЕОМ вся інформація подається двійковим кодом, хоча в повсякденному житті більш зручною залишається десяткова система кодування інформації.

Лекція 15

5.6. Класифікація (двійкових) кодів

Коди діляться по кількості застосованих кодових комбінацій на ненадлишкові (коли N = N0) й надлишкові (коли N < N0) . Тут N – кількість застосованих кодових комбінацій.

5.6.1. Ненадлишкові коди

У ненадлишкових кодах застосовані всі можливі кодові комбінації N0, що можуть бути отримані з n двійкових розрядів (N0=2n), тобто загальна кількість дорівнює числу сполук з двох елементів по n. Тому будь-яке перекручування через перешкоди одного з розрядів (символів) викликає помилку, тому що кодове слово перетворюється в деяке інше припустиме кодове слово. У такий спосіб ненадлишкові коди не дозволяють виявляти помилки.

Ненадлишкові коди бувають рівномірні і нерівномірні.

У рівномірних кодах усі кодові комбінації мають однакову довжину і тому їх не потрібно розмежовувати (відокремлювати один символ від іншого).

Прикладом може бути телеграфний код, за допомогою якого передають 32 символу російського алфавіту. Код має основу m =2, N=32, n=log232=5.

Код із 5 двійкових символів (0,1). Усього з урахуванням цифр і знаків необхідно передавати 54 символи, тому вводять регістрові кодові комбінації, що настроюють приймач на прийом букв або цифр.

У комп'ютерних мережах використовується восьмирозрядний двійковий код (8 біт, N28=256). Однак вже відчутна нестача кодових слів для кодування символів у 8-розрядних ЕОМ.

Виникає проблема національних алфавітів. 256 символів недостатньо для того, щоб кодувати усі необхідні символи повідомлень. У зв'язку з цим, кодами якихось основних символів кодуються додаткові символи національних алфавітів, а при розкодуванні утворюються різночитання. Ця проблема особливо яскраво виявляється при прийомі повідомлень із Інтернету.

Запропоновано 16-бітовий код (N216=65536), але поки не реалізований.

Рівномірні коди не є оптимальними по числу розрядів, що припадають на один переданий символ. Як це зрозуміти?

Наприклад, для передачі 10-кових цифр потрібний код із 4-х біт: {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001}. Тоді як кількість інформації, що міститься в одній 10-вій цифрі:

I=log210=3.32 біт.

Звідси виникла ідея нерівномірних кодів, у котрих символи, які часто зустрічаються в повідомленнях, кодують більш короткими кодовими комбінаціями, а ті, що рідко – більш довгими (оптимальний нерівномірний код). Можна скласти оптимальний нерівномірний код, у якому враховуються статистичні дані про частоту появи тих або інших символів у переданих повідомленнях.

Як приклад нерівномірного коду розглянемо код Хаффмена для кодування 10-вих цифр

0 – 000 2 – 010 4 – 100 6 – 1100(0110) 8 – 1110(1000)

1 – 001 3 – 011 5 – 101 7 – 1101 (0111) 9 – 1111(1001).

У середньому для запису однієї 10-вій цифри в цьому коді потрібно (63+44)/10=3,4 бита – це майже дорівнює I.

Як правило нерівномірні коди є префіксними, тобто жодна кодова комбінація не є початком іншої, що дозволяє розшифрувати повідомлення, записане без розподілювачів.

Наприклад, для коду Хаффмена: виділяють два старших біта; якщо це «11» – то це тетрада (у кодовому слові 4 цифри), інакше – тріада (доповнюють старший 0 біт). Тетради додатково перетворюють у двійкову систему.

Рівномірні коди є теж префіксними.