Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекц_информ_07.doc
Скачиваний:
19
Добавлен:
21.02.2016
Размер:
1.81 Mб
Скачать

Лекція 13

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

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

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

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

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

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

.

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

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

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

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

Таблиця 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.

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

Лекція 14

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

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

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

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

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

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

Прикладом може бути телеграфний код, за допомогою якого передають 32 символи російського алфавіту. Код має основу , , біт.

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

У комп'ютерних мережах використовується восьмирозрядний двійковий код (біт, ). Однак вже відчутна нестача кодових слів для кодування символів у ‑розрядних ЕОМ.

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

Для розв’язання проблеми запропоновано запровадити -бітовий код, спроможний закодувати символів, але поки ще не реалізований.

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

Наприклад, для передачі десяткових цифр потрібний -бітовий рівномірний код: . Тоді як ентропія десяткової цифри не біта, а

біта.

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

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

~ ~ ~ ~ ~

~ ~ ~ ~ ~.

У середньому для запису кодом Хаффмена однієї десяткової цифри потрібно

біта

це майже дорівнює ентропії десяткової цифри біта.

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

Наприклад, для коду Хаффмена: виділяють два старших біта; якщо це «» – то це тетрада (у кодовому слові біта), інакше – це тріада. В такому вигляді цифри передаються каналами зв’язку. Після передачі вже на приймачі в тріадах доповнюють старший біт, а тетради спеціальним чином також перетворюють у двійковий код.

До речі, рівномірні коди є префіксними за визначенням. Але щоб нерівномірні коди стали префіксними використовують специфічні прийоми на кшталт складання алгоритмів розпізнавання змісту повідомлень, наведеному вище.