Код (лат. codex – книга) – система умовних знаків, сигналів для передавання, опрацювання та збереження повідомлень.
Кодування повідомлень — це процес перетворення за певними правилами одного подання набору даних в інший. Під час кодування повідомлення відбувається зміна вигляду повідомлення без зміни його змісту.
Кодування – це перетворення повідомлень у зручну для передавання, зберігання опрацювання форму.
Декодування – це перетворення закодованого повідомлення у форму, прийнятну для приймача.
Наприклад, з історії добре відомий шифр, яким користувався для секретного листування зі своїми генералами римський імператор Гай Юлій Цезар (100-44 рр. до н. е.). Правила кодування полягають у тому, що кожна літера в тексті повідомлення замінюється іншою, що міститься в алфавіті на відстані кількох позицій від заданої літери:
А | Б | В | Г | Д | Е | Є | Ж | З | И | І | К | Л | М | Н | О | П | Р | С | Т | У | Ф | Ч | Ц | Ч | Ш | Щ | Ь | Ю | Я |
Щ | Ь | Ю | Я | А | Б | В | Г | Д | Е | Є | Ж | З | И | І | К | Л | М | Н | О | П | Р | С | Т | У | Ф | Ч | Ц | Ч | Ш |
Так, закодувавши повідомлення «привіт» з використанням шифру Цезаря зі зсувом на 4 літери праворуч, отримаємо повідомлення «ЛМЕЮЄО» .
Процес отримання початкового повідомлення із закодованого називають декодуванням повідомлення.
Декодування повідомлень відбувається, коли ми читаємо вголос надрукований текст, виконуємо музичний твір по нотах, розшифровуємо повідомлення, визначаємо за штрих-кодом країну, в якій виготовлено товар, тощо.
Для декодування повідомлення, закодованого шифром Цезаря зі зсувом на 4 літери праворуч, потрібно кожну літеру закодованого повідомлення замінити іншою, що розміщена в алфавіті на 4 позиції ліворуч від заданої. Таким чином, декодувавши повідомлення «зтдфкн зисб», отримаємо «добрий день».
Кодування та декодування повідомлень є прикладами процесів опрацювання даних.
Опрацювання даних – це процес отримання нових даних з наявних.
Кодування повідомлення – це процес заміни однієї послідовності сигналів, якою подано повідомлення, іншою послідовністю сигналів.
Кодування повідомлень виконується з метою їх зберігання, передавання, опрацювання, захисту
Завдання №1
Закодуйте з використанням шифру Цезаря зі зсувом на 4 літери праворуч повідомлення:
а) інформатика;
б) моя школа;
в) кодування та декодування повідомлень.
Завдання №2
Один з найдавніших шифрів розробив Полібій (III ст. до н.е.) -грецький історик, полководець, державний діяч. У шифрі, який назвали «квадрат Полібія», кожна літера алфавіту (або пара літер, що відповідають близьким за вимовою звукам) міститься в таблиці. Під час кодування повідомлення кожна літера замінюється парою цифр – номерами стовпця та рядка таблиці, на перетині яких вона розміщена. Для кодування повідомлень українською мовою кодом “Квадрат Полібія” може бути використана таблиця, зображена нижче.
1 | 2 | 3 | 4 | 5 | 6 | |
1 | А | Б | В | Г/Ґ | Д | Е |
2 | Є | Ж | З | И/Й | І/Ї | К |
3 | Л | М | Н | О | П | Р |
4 | С | Т | У | Ф | X | Ц |
5 | Ч | Ш | Щ | Ь | Ю | Я |
Декодуйте повідомлення, закодовані за розглянутими вище правилами з використанням наведеної таблиці:
а) 53 43 13 52 21 52 42;
б) 62 43 51 34 31 11 33 33 65.
Завдання №3
Закодуйте повідомлення, використавши правила кодування, наведені в попередньому завданні:
а) інформатика;
б) повідомлення.
Повідомлення можуть кодуватися різними способами. Вибір способу кодування залежить від виду повідомлення, яке необхідно кодувати: текст, число, графічне зображення або звук чи відео. Для опрацювання за допомогою комп’ютера повідомлення подаються (кодуються) у вигляді послідовностей електричних або магнітних сигналів двох видів. Кожний сигнал одного виду умовно позначають цифрою 0, а другого виду — 1.
Кодування повідомлень із використанням двох сигналів називається двійковим. Набір даних, отриманий у результаті двійкового кодування, називається двійковим кодом.
Цифра 0 або 1 у двійковому коді повідомлення має назву біт (англ. binary digit — двійкова цифра).
Із двох бітів можна скласти 4 (4 = 22) коди (00, 01, 10 і 11). Ними можна закодувати, наприклад, чотири чверті координатної площини: 00 — ліва верхня; 01 — права верхня; 10 — ліва нижня; 11 — права нижня.
Із трьох бітів можна скласти вже 8 (8 = 23) кодів (000, 001, 010, 011, 100, 101, 110, 111). Ними можна закодувати, наприклад, сторони горизонту. Із чотирьох бітів можна скласти 24 = 16 кодів, з п’яти — 25 = 32 коди і т. д. З восьми бітів можна скласти 28 = 256 кодів, і цієї кіль кості кодів достатньо, щоб закодувати всі літери англійського та українського (або якогось іншого) алфавітів, арабські цифри, розділові знаки, знаки арифметичних дій, а також деякі інші символи.
Послідовність із восьми бітів має назву байт.
1 байт = 8 біт
Традиційно для кодування одного символу використовується двійковий код, довжина якого дорівнює 1 байту, тобто 1 символ = 1 байт = 8 біт. Тоді можна обчислити, яку кількість різних символів можна закодувати: N = 28 = 256.
Конвертування двійкових чисел у десяткові.
Припустимо, дано двійкове число 1100012. Для конвертування в десяткове запишіть його як суму за розрядами таким чином:
1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 49
Конвертування десяткових чисел у двійкові.
Припустимо, нам потрібно перетворити число 21 на двійкове. Ви можете скористатися такою процедурою:
21 /2 = 10 з залишком 1
10 /2 = 5 без залишку 0
5 /2 = 2 з залишком 1
2 /2 = 1 без залишку 0
1 /2 = 0 з залишком 1
Отже, ми ділимо кожне частне на 2 і записуємо залишок на кінець двійкового запису. Продовжуємо поділ до тих пір, поки в часному не буде 0. Результат записуємо справа наліво. Тобто нижня цифра (1) буде самою лівою і т. д. В результаті отримуємо число 21 в двійковій запису: 10101.
Довжина двійкового коду текстового повідомлення — це кількість бітів чи байтів у двійковому коді цього повідомлення.
При такому кодуванні один рядок тексту підручника має середню довжину двійкового коду приблизно 50 байт, одна сторінка — приблизно 2000 байт, а весь підручник (240 с.) — приблизно 480 000 байт.
Для позначення довжин двійкового коду повідомлень використовують і більші одиниці вимірювання, назви яких, згідно з Міжнародною системою одиниць (СІ), утворюються за допомогою префіксів кіло-, мега-, гіга-, тера- і т. д. Історично склалося так, що ці префікси (кіло-, мега-, гіга-, тера-) в інформатиці трактувалися по-іншому, не так, як, наприклад, у математиці, і мають у своїй основі степені числа 2, а саме:
1 Кб (кілобайт) = 210 байт = 1024 байт;
1 Мб (мегабайт) = 210 Кб = 220 байт = 1 048 576 байт;
1 Гб (гігабайт) = 210 Мб = 220 Кб = 230 байт;
1 Тб (терабайт) = 210 Гб = 220 Мб = 230 Кб = 240 байт.
Щоб подати біти в байтах, треба число бітів поділити на 8. Наприклад: 32 біти — це 4 байти. Щоб подати байти в кілобайтах, треба число байтів поділити на 1024. Наприклад: у 2048 байтах буде 2 Кб.
І так далі за наступними одиницями вимірювання.
Щоб подати байти в бітах, треба число байтів помножити на 8. Наприклад: у 3 байтах буде 24 біти.
Щоб подати кілобайти в байтах, треба число кілобайтів помножити на 1024. Наприклад: у 3 кілобайтах буде 3072 байти і відповідно 24 576 біт.
Вправа. Довжина двійкового коду тексту.
Завдання. Книжка містить 150 сторінок, на кожній сторінці — 40 рядків, у кож- ному рядку 60 символів (включаючи пропуски). Знайдіть довжину двійкового коду тексту книжки, якщо для кодування кожного символу використано 8 біт. розв’язанн я. Обчислимо кількість символів у книжці:
60 · 40 · 150 = 360 000 символів.
Оскільки довжина двійкового коду 1 символу — 8 біт =1 байт, довжина двійкового коду книжки дорівнює 360 000 байт.
Подамо байти в більших одиницях:
360 000 байт : 1024 = 351,56 Кб.
351,56 Кб : 1024 = 0,34 Мб.
Натиснення клавіші на клавіатурі приводить до того, що сигнал надсилається в комп’ютер у вигляді двійко- вого числа, яке зберігається в кодовій таблиці. Кодова таблиця становлює відповідність між символами та їх двійковими кодами для подання текстових даних у комп’ютері. Для того щоб весь світ однаково кодував текстові дані, потрібні єдині таблиці кодування.
У різних таблицях кодування одні й ті самі символи можуть мати різні коди. Останнім часом серед таблиць кодування, які містять українські літери, найпоширенішими є КОІ8-U і Windows-1251. Довжина коду кожного символу в них — 1 байт.
Широкого поширення набув міжнародний стандарт Unicode — Unicode Consortium (UTF 32, UTF 16 і UTF 8), який відводить на кожний символ не один байт, а два, тобто 16 біт, тому за його допомогою можна закодувати не 256, а 216 = 65 536 різних символів.
Як визначити довжину двійкового коду повідомлення?
Щоб обчислити довжину двійкового коду повідомлення, треба кількість символів у тексті помножити на кількість бітів, потрібних для кодування одного символу.
Наприклад: двійкове число 01010111 займає в пам’яті 8 біт. Якщо його записати у вигляді тексту в кодуванні ASCII, довжина коду буде 8 байт, або 64 біти, оскільки кожний символ кодується за допомогою 8 біт. Довжина двійкового коду цього самого тексту в кодуванні Unicode становитиме 16 байт, або 128 біт.
Не слід забувати, що пропуски треба вважати за символи, оскільки вони також набираються на клавіатурі, мають код і зберігаються в пам’яті.
Вправа. Перекодування.
Завдання. Автоматичний пристрій здійснив перекодування текстового повідомлення довжиною 48 символів, спочатку записаного в 7-бітному коді ASCII, у 16-бітне кодування Unicode. Визначте, на скільки при цьому збільшилася довжина двійкового коду повідомлення.
Розв’язання. Зміна кодування із 7 біт на 16 біт збільшує довжину коду кожного символу на 16 – 7 = 9 біт. Оскільки повідомлення містить 48 символів, то його обсяг збільшився на 48 · 9 = 432 біти.
Подамо біти в байтах: 432 : 8 = 54 байти.