Кодування чисел Питання про
кодування чисел виникає з тієї причини, що в машину не можна або нераціонально вводити числа в тому вигляді, в якому вони зображаються людиною на папері. По-перше, потрібно кодувати
знак числа. По-друге, з різних причин, які будуть розглянуті нижче, доводиться іноді кодувати й іншу частину числа.
Кодування цілих чисел здійснюватися через їх подання до двійковій системі числення:
саме в цьому вигляді вони й містяться в осередку. Один біт відводитися при цьому для представлення знака числа (нулем кодується знак "плюс", одиницею - "мінус"). Для кодування дійсних чисел існує спеціальний формат чисел з плаваючою комою. Число при цьому представляється у вигляді: N = M * q
p, де M - мантиса, p - порядок числа N, q - основа системи числення. Якщо при цьому мантиса M задовольняє умові 0,1 <= | M | <= 1 то число N називають нормалізованим.
Кодування тексту Для кодування літер та інших символів, що використовуються в друкованих документах, необхідно закріпити за кожним
символом числовий номер - код. В англомовних
країнах використовуються 26 прописних і 26 малих літер (A ... Z, a ... z), 9 знаків пунктуації (.,:! ";? ()), Пробіл, 10 цифр, 5 знаків арифметичних дій (+,-,* , /, ^) і спеціальні
символи (№,%, _, #, $, &,>, <, |, \\) - всього трохи більше 100 символів. Таким чином, для кодування цих символів можна обмежитися максимальним 7-розрядним двійковим числом (від 0 до 1111111, у десятковій системі числення - від 0 до 127).
Кодування графічної інформації У відеопам'яті знаходиться двійкова інформація про зображення, що виводиться на екран. Майже всі створені, в опрацюванні чи переглядаються за допомогою комп'ютера зображення можна розділити на дві великі частини - растрову і
векторну графіку.
Растрові зображення є одношаровою сітку точок, які називаються пікселями (pixel, від англ. Picture element). Код піксела містить інформації про його кольорі. На противагу растровій графіці
векторне зображення багатошаровий. Кожен елемент векторного зображення - лінія. Кожен елемент векторного зображення є об'єктом, який описується за допомогою
математичних рівнянні. Складні об'єкти (ламані лінії, різні
геометричні фігури) представляються у вигляді сукупності елементарних графічних об'єктів.
Кодування звуку На комп'ютері працювати зі звуковими файлами почали в 90-х роках. В основі цифрового кодування звуку лежить -
процес перетворення коливань повітря в
коливання електричного струму і подальша дискретизація аналогового електричного
сигналу.
Кодування та відтворення звукової інформації здійснюється за допомогою спеціальних програм (редактор звукозапису).
Часова дискретизація - спосіб перетворення звуку в цифрову форму шляхом розбивання звукової хвилі на окремі маленькі тимчасові ділянки де амплітуди цих ділянок квантуються (їм присвоюється певне значення). Це проводиться за допомогою аналого-цифрового перетворювача, розміщеного на звуковій платі. Таким чином, безперервна залежність амплітуди
сигналу від часу замінюється дискретної послідовністю рівнів гучності. Сучасні 16-бітові звукові карти кодують 65536 різних рівнів гучності або 16-бітну глибину звуку (кожному значенню амплітуди
звук. Сигналу присвоюється 16-бітний код) Якість кодування звуку залежить від:
1. глибини кодування звуку - кількість рівнів звуку
2. частоти дискретизації - кількість змін рівня сигналу в одиницю
У чому різниця між кодуванням і шифруванням? Шифрування - це спосіб зміни повідомлення, що забезпечує приховування його вмісту. Кодування - це перетворення звичайного, зрозумілого, тексту в код. При цьому мається на увазі, що існує взаємно однозначна відповідність між символами тексту і символьного коду - в цьому
принципова відмінність кодування від шифрування.
Теорія кодування - це розділ теорії
інформації, пов'язаний із завданнями
кодування і декодування повідомлень, що надходять до споживачів і посилаються з джерел інформації.
Теорія кодування близька до найдавнішого мистецтва тайнопису - криптографії. Над розробкою різних шифрів працювали багато відомих учених: філософ Ф. Бекон, математики Д. Кардано, Д. Валліс. Одночасно з розвитком методів шифровки розвивалися прийоми розшифровки, або криптоаналізу. У середині ХІХ ст.
ситуація змінилася.
Винахід телефону і іскрового телеграфу поставило перед вченими і інженерами проблему створення нової теорії кодування. Першою орієнтованої на техніку системою кодування виявилася азбука Морзе, в якій прийнято троїчну
кодування (точка, тире, пауза).
Двійкове кодування - один з найпоширеніших способів подання інформації. В обчислювальних машинах, в
роботах та верстатах з числовим програмним
управлінням, як правило, вся інформація, з якою має справу пристрій, кодується у вигляді слів двійкового алфавіту.
Двійковий алфавіт складається з двох цифр 0 і 1.
Цифрові
ЕОМ (персональні комп'ютери відносяться до класу цифрових) використовують двійкове кодування будь-якої інформації. В основному це пояснюється тим, що побудувати технічний пристрій, безпомилково розрізняти 2 різних
стану сигналу, технічно виявилося
простіше, ніж те, яке б безпомилково розрізняло 5 або 10 різних станів.
До недоліків двійкового кодування відносять дуже довгі записи двійкових кодів, що ускладнює роботу з ними.
Двійкове кодування символьної (текстової) інформації Основна
операція, вироблена над окремими символами тексту -
порівняння символів. При порівнянні символів найбільш важливими аспектами є
унікальність коду для кожного
символу і
довжина цього коду, а сам
вибір принципу кодування практично не має значення. Для кодування текстів використовуються різні
таблиці перекодування. Важливо, щоб при кодуванні і декодуванні одного і
того ж тексту використовувалася одна і та ж таблиця.
Таблиця перекодування - таблиця, яка містить впорядкований певним чином перелік кодованих символів,
відповідно до якої відбувається перетворення символу в його двійковий код і назад. Найбільш популярні таблиці перекодування: ДКОИ-8, ASCII, CP1251, Unicode.
Історично склалося, що в якості довжини коду для кодування символів було обрано 8 біт або 1 байт. Тому найчастіше одному символу тексту, що зберігається в комп'ютері,
відповідає один байт пам'яті. Різних комбінацій з 0 і 1 при довжині коду 8 біт може бути 28 = 256, тому за допомогою однієї таблиці перекодування можна закодувати не більше 256 символів. При довжині коду в 2 байти (16 біт) можна закодувати 65536 символів. В даний час велика частина користувачів за допомогою комп'ютера обробляє текстову інформацію, яка складається з символів: літер, цифр, знаків пунктуації та ін Традиційно для того щоб закодувати один
символ використовують
кількість інформації дорівнює 1 байту, тобто I = 1 байт = 8 біт. За допомогою формули, яка пов'язує між собою кількість можливих подій До і кількість інформації I, можна обчислити скільки різних символів можна закодувати (вважаючи, що
символи - це можливі події):
К = 2I = 28 = 256,
тобто для подання текстової інформації можна використовувати алфавіт потужністю 256 символів.
Суть кодування полягає в тому, що кожному символу ставлять у відповідність двійковий код від 00000000 до 11111111 або
відповідний йому десятковий код від 0 до 255. Необхідно пам'ятати, що в даний час для кодування російських букв використовують п'ять різних кодових таблиць (КОІ - 8, СР1251, ср866, Мас, ISO), причому тексти, закодовані за допомогою однієї таблиці не будуть правильно відображатися в іншій кодуванні. Наочно це можна представити у вигляді фрагмента об'єднаної таблиці кодування символів. Одному й тому ж двійкового коду ставиться у відповідність різні символи.
Двійковий код
|
Десятковий код
|
КОИ8
|
СР1251
|
Ср866
|
Мас
|
ISO
|
11000010
|
194
|
б
|
У
|
-
|
-
|
Т
|
Втім, у більшості випадків про перекодуванні текстових документів піклується на користувач, а спеціальні програми - конвертори, які вбудовані в додатки. Починаючи з 1997 р . останні версії Microsoft
Windows & Office підтримують нову кодування Unicode, яка на кожен символ відводить по 2 байти, а, тому, можна закодувати не 256 символів, а 65536 різних символів. Щоб визначити числовий код символу можна або скористатися кодовою
таблицею, або, працюючи в текстовому редакторі
Word 6.0 / 95. Для цього в
меню потрібно вибрати пункт "Вставка" - "Символ", після чого на екрані з'являється діалогова панель Символ. У діалоговому вікні з'являється таблиця символів для вибраного шрифту.
Символи в цій таблиці розташовуються порядково, послідовно зліва направо, починаючи з символу Пробіл (лівий верхній кут) і, закінчуючи, буквою "я" (правий нижній кут). Для визначення числового коду символу в кодуванні Windows (СР1251) потрібно за допомогою миші або клавіш
управління курсором вибрати потрібний символ, потім клацнути по кнопці Клавіша. Після цього на екрані з'являється діалогова панель Настройка, в якій в нижньому лівому куті міститься десятковий числовий код вибраного символу
Приклади двійкового кодування інформації. Серед усього розмаїття інформації, що обробляється на комп'ютері, значну частину складають числова, текстова, графічна та аудіоінформація. Познайомимося з деякими способами кодування цих типів інформації в ЕОМ.
Кодування чисел. Є два основні формати представлення чисел у пам'яті комп'ютера. Один з них використовується для кодування цілих чисел, другий (так зване представлення числа у форматі з плаваючою точкою) використовується для завдання деякого підмножини дійсних чисел. Безліч цілих чисел, які представлені у пам'яті ЕОМ, обмежена. Діапазон значень залежить від розміру області пам'яті, використовуваної для розміщення чисел. У
k-розрядної осередку може зберігатися 2
k різних значень цілих
чисел. Щоб отримати внутрішнє представлення цілого додатного числа
N, що зберігається в
k-розрядному машинному слові, потрібно:
1) перевести число N в двійкову систему числення;
2) отриманий результат доповнити зліва незначущими нулями до k розрядів.
Наприклад, для отримання внутрішнього подання цілого числа 1607 в 2-х байтовой осередку число переводиться у двійкову систему: 1607
10 = 11001000111
2. Внутрішнє представлення цього числа у клітинці має вигляд: 0000 0110 0100 0111. Для запису внутрішнього подання цілого від'ємного числа (-N) потрібно:
1) отримати внутрішнє подання позитивного числа
N; 2) отримати зворотний код цього числа, замінюючи 0 на 1 і 1 на 0;
3) отриманого числа додати 1 до отриманого числа.
Внутрішнє представлення цілого від'ємного числа -1607. З використанням результату попереднього прикладу і записується внутрішнє подання позитивного числа 1607: 0000 0110 0100 0111. Зворотний код виходить інвертуванням: 1111 1001 1011 1000. Додається одиниця: 1111 1001 1011 1001 - це і є внутрішнє двійкове подання числа -1607. Формат з плаваючою точкою використовує уявлення дійсного числа
R у вигляді твору мантиси
m на основу системи числення
n в деякій цілій степені
p, яку називають порядком:
R = m *
n p. Подання числа у формі з плаваючою точкою неоднозначно. Наприклад, справедливі такі рівняння:
12,345 = 0,0012345 Ч
10 квітня = 1234,5 Ч 10
-2 = 0,12345 Ч
10 лютий
Найчастіше в ЕОМ використовують нормалізоване подання числа у формі з плаваючою крапкою. Мантиса в такому поданні повинна задовольняти умові:
0,1
p
m <1
p. Інакше кажучи, мантиса менше 1 і перша значуща цифра - не нуль
(p - основа системи числення). У пам'яті комп'ютера мантиса представляється як ціле число, що містить тільки значущі
цифри (0 цілих і кома не зберігаються), так для числа 12,345 в комірці пам'яті, відведеної для зберігання мантиси, буде збережено число 12 345. Для однозначного відновлення вихідного числа залишається зберегти тільки його порядок, в даному прикладі - це 2.
Кодування тексту Безліч символів, використовуваних при записі тексту, називається алфавітом. Кількість символів в алфавіті називається його потужністю. Для представлення текстової інформації в комп'ютері найчастіше використовується алфавіт потужністю 256 символів. Один символ з такого алфавіту несе 8 біт інформації, т. к. 2
8 = 256. Але 8 біт складають один байт, отже, двійковий код кожного символу займає 1 байт пам'яті ЕОМ. Усі символи такого алфавіту пронумеровані від 0 до 255, а кожному номеру відповідає 8-розрядний двійковий код від 00000000 до 11111111. Цей код є порядковим номером символу в двійковій системі числення. Для різних типів ЕОМ і операційних систем використовуються різні таблиці кодування, що відрізняються порядком розміщення символів алфавіту в кодової таблиці. Міжнародним
стандартом на
персональних комп'ютерах є вже згадувана таблиця кодування ASCII. Принцип послідовного кодування алфавіту полягає в тому, що в кодової таблиці ASCII латинські літери (прописні і рядкові) розташовуються в алфавітному порядку. Розташування цифр також упорядковано за зростанням значень.
Стандартними в цій таблиці є лише перші 128 символів, тобто символи з номерами від нуля (двійковий код 00000000) до 127 (01111111). Сюди входять букви
латинського алфавіту, цифри,
знаки пунктуації, дужки і деякі інші символи. Решта 128 кодів, починаючи зі 128 (двійковий код 10000000) і кінчаючи 255 (11111111), використовуються для кодування букв національних алфавітів, символів псевдографіки і наукових символів.
Кодування графічної інформації У відеопам'яті знаходиться двійкова інформація про зображення, що виводиться на екран. Майже всі створені, в опрацюванні чи переглядаються за допомогою комп'ютера зображення можна розділити на дві великі частини - растрову і векторну графіку. Растрові зображення є одношаровою сітку точок, які називаються пікселями (pixel, від англ. Picture element). Код піксела містить інформації про його кольорі. Для чорно-білого зображення (без напівтонів) піксел може приймати тільки два значення: білий і чорний (світиться - не світиться), а для його кодування досить одного біта пам'яті: 1 - білий, 0 - чорний. Піксел на кольоровому дисплеї може
мати різне забарвлення, тому одного біта на піксель недостатньо. Для кодування 4-кольорового зображення потрібні два біти на піксель, оскільки два біта можуть приймати 4 різних стану. Може використовуватися, наприклад,
такий варіант кодування кольорів: 00 - чорний, 10 - зелений, 01 - червоний, 11 - коричневий. На RGB-моніторах все розмаїття кольорів виходить поєднанням базових кольорів - червоного (Red), зеленого (Green), синього (Blue), з яких можна отримати 8 основних комбінацій:
R
|
R
|
G
|
G
|
B
|
B
|
колір
|
колір
|
0
|
1
|
0
|
0
|
0
|
0
|
чорний
|
червоний
|
0
|
1
|
0
|
0
|
1
|
1
|
синій
|
рожевий
|
0
|
1
|
1
|
1
|
0
|
0
|
зелений
|
коричневий
|
0
|
1
|
1
|
1
|
1
|
1
|
блакитний
|
білий
|
Зрозуміло, якщо мати можливість керувати інтенсивністю (яскравістю) свічення базових квітів, то кількість різних варіантів їх поєднань, що породжують різноманітні відтінки, збільшується. Кількість різних кольорів -
К і кількість бітів для їх кодування -
N пов'язані між собою простою формулою:
2
N =
К. На противагу растровій графіці
векторне зображення багатошаровий. Кожен елемент векторного зображення - лінія, прямокутник, коло або фрагмент тексту - розташований у своєму власному шарі, пікселі якого встановлюються незалежно від інших верств. Кожен елемент векторного зображення є об'єктом, який описується за допомогою спеціальної мови (математичних рівняння ліній, дуг, кіл і т.д.) Складні об'єкти (ламані лінії, різні геометричні фігури) представляються у вигляді сукупності елементарних графічних об'єктів. Об'єкти векторного зображення, на відміну від растрової графіки, можуть змінювати свої розміри без втрати якості (при збільшенні растрового зображення збільшується зернистість).
Кодування звуку З фізики відомо, що
звук - Це коливання повітря. Якщо перетворити звук в електричний
сигнал (наприклад, за допомогою мікрофона), то видно плавно змінюється з плином часу напруга. Для комп'ютерної обробки такий - аналоговий - сигнал потрібно якимось чином перетворити в послідовність двійкових чисел. Робиться це, наприклад, так - вимірюється напруга через рівні проміжки часу і отримані значення записуються в пам'ять комп'ютера. Цей процес називається дискретизацією (або оцифруванням), а пристрій, що виконує його - аналого-цифровим перетворювачем (АЦП).
Щоб відтворити закодований таким чином звук, потрібно зробити зворотне перетворення (для цього служить цифро-аналоговий перетворювач
- ЦАП), а потім згладити вийшов ступінчастий сигнал. Чим вище частота дискретизації і чим більше розрядів відводиться для кожного відліку, тим точніше буде представлений звук, але при цьому збільшується і розмір звукового файлу. Тому залежно від
характеру звуку, вимог, що пред'являються до його якості і об'єму займаної пам'яті, вибирають деякі
компромісні значення. Описаний спосіб кодування звукової інформації досить універсальний,
він дозволяє представити будь-який звук і перетворювати його самими різними способами. Але бувають випадки, коли вигідніше діяти по-іншому. Здавна використовується досить компактний спосіб представлення музики - нотна запис. У ній спеціальними символами вказується, якої висоти звук, на якому інструменті і як зіграти. Фактично, її можна вважати алгоритмом для музиканта, записаним на особливому формальному мовою. У 1983 провідні виробники комп'ютерів і музичних синтезаторів розробили
стандарт, який визначив таку систему кодів. Він отримав назву MIDI. Звичайно, така система кодування дозволяє записати далеко не всякий звук, вона годиться лише для інструментальної музики. Але є у неї і незаперечні
переваги: надзвичайно компактна запис, природність для музиканта (практично будь-MIDI-редактор дозволяє працювати з музикою у вигляді звичайних нот), легкість заміни інструментів, зміни темпу і тональності мелодії.
Є й інші, суто комп'ютерні, формати запису музики. Серед них - формат MP3, що дозволяє з дуже великим якістю і ступенем стиснення кодувати музику, при цьому замість 18-20 музичних композицій на
стандартному компакт-диску (CDROM) поміщається близько 200. Одна
пісня займає, приблизно, 3,5 Mb, що дозволяє користувачам
мережі Інтернет легко обмінюватися музичними композиціями.