Кодування - це ... Знакові системи: кодування інформації
Кодування інформації - неймовірно широка галузь знань. Зрозуміло, вона безпосередньо пов`язана з розвитком цифрової техніки. У багатьох сучасних навчальних закладах найпопулярніша тема - кодування інформації. Сьогодні ми вивчимо основні трактування цього явища стосовно до різних аспектів роботи комп`ютерів. Постараємося відповісти на питання: "Кодування - це процес, метод, інструмент або всі ці явища одночасно?"
Нулі і одиниці
Практично будь-які типи даних, які відображаються на екрані комп`ютера, так чи інакше представляють собою двійковий код, що складається з нулів і одиниць. Це самий найпростіший, "низькорівневий" спосіб шифрування інформації, що дозволяє ПК обробляти дані. Двійковий код універсальний: його розуміють всі без винятку комп`ютери (власне, для цього він і був створений - щоб стандартизувати користування інформацією в цифровій формі).
Базова одиниця, яку використовує двійкове кодування, - це біт (від словосполучення "binary digit" - "подвійна цифра"). Він дорівнює або 0, або 1. Як правило, біти окремо не використовуються, а об`єднуються в 8-значні послідовності - байти. У кожному з них, таким чином, може міститися до 256 комбінацій з нулів і одиниць (2 в 8-й ступеня). Для запису значних обсягів інформації використовуються, як правило, не поодинокі байти, а більш масштабні величини - з приставками "кіло", "мега", "гіга", "тера" і т. Д., Кожна з яких в 1000 разів більше попередньої .
Кодування тексту
Найпоширеніший вид цифрових даних - це текст. Яким чином здійснюється його кодування? Це досить легко зрозумілий процес. Буква, розділовий знак, цифра або символ може кодуватися за допомогою одного або декількох байтів, тобто комп`ютер бачить їх як унікальну послідовність нулів і одиниць, а потім, відповідно до закладеного алгоритму розпізнавання, відображає на екрані. Є два основних світових стандарту "шифрування" комп`ютерного тексту - ASCII і UNICODE.
В системі ASCII кожен знак кодується тільки одним байтом. Тобто за допомогою цього стандарту можна "зашифрувати" до 256 знаків - що більш ніж достатньо для відображення символів більшості алфавітів світу. Звичайно, всі існуючі на сьогодні національні літерні системи не помістяться в цей ресурс. Тому для кожного алфавіту створена власна "підсистема" шифрування. Відбувається кодування інформації за допомогою знакових систем, адаптованих до національних зразкам писемності. Однак кожна з цих систем, в свою чергу, є складовою частиною глобального стандарту ASCII, прийнятого на міжнародному рівні.
В рамках системи ASCII цей самий ресурс з 256 знаків ділиться на дві частини. Перші 128 - це символи, відведені під англійський алфавіт (букви від a до z), а також цифри, основні розділові знаки і деякі інші символи. Другі 128 байт зарезервовані, в свою чергу, під національні літерні системи. Це і є "підсистема" для неанглійських алфавітів - російського, хінді, арабської, японської, китайської та багатьох інших.
Кожна з них представлена у вигляді окремої таблиці кодування. Тобто може вийти (і, як правило, це відбувається) так, що одна і та ж послідовність бітів буде відповідати за різні літери і символи у двох окремих "національних" таблицях. Більше того, у зв`язку з особливостями розвитку IT-сфери в різних країнах навіть вони відрізняються. Наприклад, для російської мови найбільш поширені дві системи кодування: Windows-1251 і KOI-8. Перша з`явилася пізніше (так само як і сама співзвучна їй операційна система), але тепер багатьма IT-фахівцями використовується в першочерговому порядку. Тому комп`ютер, щоб на ньому можна було гарантовано читати російський текст, повинен уміти коректно розпізнавати обидві таблиці. Але, як правило, ніяких проблем з цим немає (якщо на ПК стоїть сучасна операційна система).
Методи кодування текстів весь час удосконалюються. Крім "однобайтні" системи ASCII, здатної оперувати тільки 256 значеннями для символів, є також і "двухбайтном" система UNICODE. Нескладно підрахувати, що вона дозволяє здійснювати текстове кодування в кількості, рівній 2 в 16-й ступеня, тобто 65 тис. 536. У ній, у свою чергу, є ресурси для одночасного кодування практичних всіх існуючих національних алфавітів світу. Використання UNICODE не менше поширене, ніж задіяння "класичного" стандарту ASCII.
Кодування графіки
Вище ми визначили, яким чином "шифруються" тексти і як при цьому використовуються байти. Як йде справа з цифровими фотографіями і картинками? Також досить просто. Аналогічно тому, як це відбувається з текстом, головну роль в кодуванні комп`ютерної графіки грають все ті ж байти.
Процес побудови цифрових зображень в цілому схожий з механізмами, на основі яких працює телевізор. На екрані ТБ, якщо придивитися, картинка складається з безлічі окремих точок, які в сукупності формують розпізнаються на деякій відстані оком фігури. Телевізійна матриця (або ЕЛТ-проектор) отримує з передавача горизонтальні і вертикальні координати кожної з точок і поступово вибудовує зображення. Комп`ютерний принцип кодування графіки працює точно так само. "Шифрування" зображень байтами засноване на завданні кожної з екранних точок відповідних координат (а також кольору кожної з них). Це якщо говорити простою мовою. Зрозуміло, графічне кодування - це процес набагато складніший, ніж той же текстове.
Метод завдання точкам відповідних координат і колірних параметрів називається "растровим". Аналогічно іменуються багато файлові формати комп`ютерної графіки. Координати кожної з точок зображення, а також їх колір записуються в один або декілька байтів. Від чого залежить їх кількість? Головним чином від того, скільки відтінків кольору належить "зашифровувати". Один байт, як відомо, - це 256 значень. Якщо для вибудовування картинки нам вистачить такої кількості відтінків - обійдемося цим ресурсом. Зокрема, в нашому розпорядженні може виявитися 256 відтінків сірого кольору. І цього буде досить, щоб кодувати практично будь чорно-білі зображення. У свою чергу, для кольорових зображень даного ресурсу буде явно недостатньо: людське око, як відомо, здатний розрізняти до декількох десятків мільйонів квітів. Тому необхідний "запас" не в 256 значень, а в сотні тисяч разів більше. Чому для кодування точок задіюється не один байт, а декілька: по існуючим на сьогодні стандартам їх може бути 16 (можна "зашифрувати" 65 тис. 536 квітів) або 24 (16 млн 777 тис. 216 відтінків).
На відміну від текстових стандартів, різноманіття яких можна порівняти з кількістю світових мов, з графікою справи йдуть трохи простіше. Найпоширеніші формати файлів (такі як JPEG, PNG, BMP, GIF і т. Д.) Розпізнаються на більшості комп`ютерів в цілому однаково добре.
Немає нічого складного з тим, щоб зрозуміти, за якими принципами здійснюється кодування графічної інформації. 9 клас будь-якої середньої російської школи, як правило, включає в себе курс комп`ютерної науки, де подібні технології розкриваються досить докладно дуже простою і зрозумілою мовою. Є також і спеціалізовані програми навчання для дорослих - їх організовують вузи, ліцеї, або також школи.
Тому сучасному російському людині є де почерпнути знання про коди, що мають практичну значимість в частині комп`ютерної графіки. А якщо хочеться ознайомитися з базовими знаннями самостійно, можна обзавестися доступними навчальними матеріалами. До таких можна віднести, наприклад, главу "Кодування графічної інформації (9 клас, підручник" Інформатика та ІКТ "під авторством Угриновича Н. Д.).
Кодування звукових даних
Комп`ютер регулярно використовується для прослуховування музики або інших звукових файлів. Так само як і у випадку з текстом і графікою, будь-який звук на ПК - це все ті ж байти. Вони, в свою чергу, "дешифруються" аудіокартою та іншими мікросхемами і перетворюються в чутний звук. Принцип тут приблизно той же, що і у випадку з пластинками грамофона. У них, як відомо, кожен звук відповідає мікроскопічної бороздке на пластику, яка розпізнається зчитувачем, а потім озвучується. У комп`ютері все схоже. Тільки роль борозенок грають байти, в природі яких, так само як і у випадку з текстом і картинками, лежить двійкове кодування.
Якщо у випадку з комп`ютерними зображеннями одиничним елементом виступає точка, то при запису звуку це так званий "відлік". У ньому, як правило, прописується два байта, генеруючих до 65 тис. 536 звукових мікроколивань. Однак, на відміну від того, як це відбувається при побудові зображень, для поліпшення якості звуку здійснюється не додавання додаткових байтів (їх, очевидно, і так більш ніж достатньо), а збільшення кількості "відліків". Хоча в деяких аудиосистемах байтів використовується і меншу, і більше число. Коли здійснюється кодування звуку, то стандартної одиницею виміру "щільності потоку" байтів виступає одна секунда. Тобто мікроколивання, зашифровані за допомогою 8 тис. Відліків в секунду, будуть, очевидно, більш низької якості, ніж послідовність звуків, закодованих за допомогою 44 тис. "Відліків".
Міжнародна стандартизація аудіофайлів, так само як і у випадку з графікою, добре розвинена. Є кілька типових форматів звукового медіа - MP3, WAV, WMA, якими користуються у всьому світі.
Кодування відео
Свого роду "гібридна схема", при якій шифрування звуку об`єднується з кодуванням картинок, використовується в комп`ютерних відеороликах. Зазвичай фільми і кліпи складаються з двох типів даних - це як такої звук і супутній йому відеоряд. Як "шифрується" перший компонент, ми розповіли вище. З другим трохи складніше. Принципи тут інші, ніж включає в себе розглянуте вище графічне кодування. Але завдяки універсальності "концепції" байтів, суть механізмів цілком зрозуміла й логічна.
Згадаймо, як влаштована кіноплівка. Вона являє собою не що інше як послідовність окремих кадрів (їх, як правило, 24). Абсолютно аналогічним чином влаштовані комп`ютерні відеоролики. Кожен кадр - це картинка. Про те, як вона будується за допомогою байтів, ми визначили вище. У свою чергу, у відеоряді присутня певна область коду, що дозволяє пов`язувати окремі кадри між собою. Свого роду цифровий замінник кіноплівки. Окремою одиницею виміру відеопотоку (аналогічної точкам для картинок і отсчетам для звуку, як і в "плівковому" форматі кіно і роликів), прийнято вважати кадр. Останніх в одній секунді, відповідно до прийнятих стандартів, може бути 25 або 50.
Так само як і у випадку з аудіо, є поширені міжнародні стандарти відеофайлів - MP4, 3GP, AVI. Виробники кіно і роликів намагаються випускати зразки медіа, сумісні з якомога більшою кількістю комп`ютерів. Зазначені формати файлів - в числі найпопулярніших, вони відкриваються практично на будь-якому сучасному ПК.
Стиснення даних
Зберігання комп`ютерних даних здійснюється на різних носіях - дисках, флешках і т. Д. Як ми вже сказали вище, байти, як правило, "обростають" приставками "мега", "гіга", "тера" і т. Д. У деяких випадках величина закодованих файлів така, що розмістити їх при наявних ресурсах на диску неможливо. Тоді використовуються різного роду методи стиснення даних. Вони, по суті, також представляють собою кодування. Це - ще одна можлива трактування терміна.
Існує два основні механізми стиснення даних. По першому з них послідовність бітів записується в "упакованому" вигляді. Тобто комп`ютер не може прочитати вміст файлів (відтворити його як текст, картинку або відео), якщо не здійснить процедуру "розпакування". Програма, яка виконує стиснення даних таким способом, називається архіватор. Принцип її роботи досить простий. Архівацію даних як один з найпопулярніших методів, за допомогою яких можна здійснити кодування інформації, інформатика шкільного рівня вивчає в обов`язковому порядку.
Як ми пам`ятаємо, процес "Шифрування" файлів в байтах стандартизований. Візьмемо стандарт ASCII. Щоб, скажімо, зашифрувати слово "привіт", нам знадобиться 6 байт, виходячи з кількості букв. Саме стільки простору файл з цим текстом займе на диску. Що буде, якщо ми напишемо слово "привіт" 100 разів підряд? Нічого особливого - для цього нам знадобиться 600 байт, відповідно, стільки ж місця на диску. Однак ми можемо використовувати архіватор, що створить файл, в якому за допомогою набагато меншої кількості байт буде "зашифрована" команда, що виглядає приблизно так: "привіт помножити на 100". Підрахувавши кількість букв в цьому повідомленні, приходимо до висновку, що для запису такого файлу нам знадобиться всього лише 19 байт. І стільки ж місця на диску. При "розпакуванні" же архівного файлу відбувається "дешифрування", і текст набуває початковий вигляд зі "100 привітами". Таким чином, використовуючи спеціальну програму, яка задіює особливий механізм кодування, ми можемо заощадити на диску істотний обсяг простору.
Вищеописаний процес досить універсальний: які б не використовувалися знакові системи, кодування інформації з метою стиснення завжди можливо за допомогою архівації даних.
Що являє собою другий механізм? В якійсь мірі він схожий з тим, що застосовується в архіваторах. Але принципова його відмінність у тому, що стиснений файл цілком може відображатися комп`ютером без процедури "розпакування". Як працює цей механізм?
Як ми пам`ятаємо, в початковому вигляді слово "привіт" займає 6 байт. Однак ми можемо піти на хитрість і записати його так: "првт". Виходить 4 байта. Все, що залишається зробити - це "навчити" комп`ютер додавати в процесі відображення файлу ті букви, які ми прибрали. Треба сказати, що на практиці "навчальний" процес організовувати й не потрібно. Базові механізми розпізнавання відсутніх символів закладені в більшості сучасних програм для ПК. Тобто основна частина файлів, з якими ми маємо справу кожен день, так чи інакше вже "зашифрована" за цим алгоритмом.
Безумовно, є і "гібридні" системи кодування інформації, що дозволяють здійснювати стиснення даних при одночасному залученні обох вищеописаних підходів. І вони, швидше за все, будуть ще більш ефективні з точки зору економії дискового простору, ніж кожен окремо.
Звичайно, оперуючи словом "привіт", ми виклали лише основні принципи роботи механізмів стиснення даних. У реальності вони набагато складніше. Різні системи кодування інформації можуть пропонувати неймовірно складні механізми "компресії" файлів. Однак ми бачимо, за рахунок чого можна домогтися економії дискового простору, практично не вдаючись до погіршення якості інформації на ПК. Особливо значима роль стиснення даних при використанні картинок, аудіо та відео - ці види даних більш інших вимогливі до ресурсів диска.
Які ще бувають "коди"?
Як ми вже сказали на самому початку, кодування - це складені явище. Розібравшись з базовими принципами кодування цифрових даних, заснованих на байтах, ми можемо торкнутися іншу область. Пов`язана вона з використанням комп`ютерних кодів в дещо інших значеннях. Тут під "кодом" ми будемо розуміти не послідовність нулів і одиниць, а сукупність різних букв і символів (які, як ми вже знаємо, і так зроблені з 0 і 1), що має практичну значимість для життя сучасної людини.
Програмний код
В основі роботи будь-якої комп`ютерної програми - код. Написаний він мовою, зрозумілою комп`ютера. ПК, розшифровуючи код, виконує ті чи інші команди. Відмітна особливість комп`ютерної програми від іншого типу цифрових даних в тому, що міститься в ній код здатний "дешифрувати" себе сам (користувачеві лише досить запустити цей процес).
Ще одна особливість програм - у відносній гнучкості використовуваного коду. Тобто давати комп`ютеру одні й ті ж завдання людина може, користуючись досить великим набором "фраз", а при необхідності - і іншою мовою.
Код розмітки документів
Інша практично значуща область застосування літерного коду - створення і форматування документів. Як правило, простого відображення знаків на екрані недостатньо з точки зору практичної значущості користування ПК. У більшості випадків текст повинен бути побудований за допомогою шрифту певного кольору і розміру, супроводжуватися додатковими елементами (такими як, наприклад, таблиці). Всі ці параметри задаються, так само як і у випадку з програмами, на особливих мовах, зрозумілих комп`ютеру. ПК, розпізнавши "команди", відображає документи саме так, як бажає користувач. Крім того, тексти можуть бути однаково відформатовані, подібно тому, як це відбувається з програмами, за допомогою різних наборів "фраз" і навіть на різних мовах.
Однак є принципова відмінність між кодами для документів і комп`ютерних програм. Воно полягає в тому, що перші не здатні дешифрувати себе самі. Для відкриття файлів з відформатовані текстами завжди потрібні сторонні програми.
Шифрування даних
Ще одна інтерпретація терміну "код" стосовно до комп`ютерів - це шифрування даних. Вище ми вживали це слово як синонім терміну "кодування", і це припустимо. У даному випадку під шифруванням ми будемо розуміти іншого роду явище. А саме кодування цифрових даних з метою заборони доступу до них з боку інших людей. Захист комп`ютерних файлів - найважливіший напрям діяльності в IT-сфері. Це фактично окрема наукова дисципліна, її включає в себе також і шкільна інформатика. Кодування файлів з метою припинення несанкціонованого доступу - це завдання, важливість якого викладається громадянам сучасних країн вже в дитинстві.
Як влаштовані механізми, за допомогою яких здійснюється шифрування даних? В принципі, так само просто і зрозуміло, як і всі попередні, розглянуті нами. Кодування - це процес, легко зрозумілий з точки зору базових принципів логіки.
Припустимо, нам необхідно передати повідомлення "Іванов йде до Петрову" так, щоб ніхто не зміг його прочитати. Ми довіряємо зашифрувати повідомлення комп`ютера і бачимо результат: "10-3-1-15-16-3-10-5-7-20-11-17-6-20-18-3-21". Цей код, звичайно, досить нехитрий: кожна цифра відповідає порядковому номеру букв нашої фрази в алфавіті. "І" стоїть на 10 місці, "В" - на 3, "А" - на 1, і т. Д. Але сучасні комп`ютерні системи кодування можуть шифрувати дані так, що підібрати до них ключ буде неймовірно складно.