Файл: Методы кодирования данных (Разработка приложения для кодирования текстовой информации).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 23.04.2023

Просмотров: 534

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Введение

Кодирование данных имеет очень важное значение для ввода, обработки, хранения и вывода информации в цифровых устройствах. Это связано с тем, что данные в виде, привычном для человека, почти не пригодны для машины.

Для хранения различных данных существуют различные форматы, а значит и алгоритмы кодирования данных.

Цели кодирования данных в цифровых устройствах:

  1. Для удобного ввода, обработки, хранения и вывода.
  2. Уменьшение объема данных за счет удаления незначимой части информации(сжатие)
  3. Ограничение доступа. Доступ к кодированной информации имеет только тот, кто имеет «ключ» для дешифрации данных.

В первой главе данной курсовой работы приведены базовые принципы кодирования двоичной информации, кодирование текста, графической, звуковой и видеоинформации.

Во второй главе рассмотрены принципы ограничения доступа к информации – криптография. Рассмотрена работа с ключами доступа и способы взлома.

В практической части приведен пример простого WEB-приложения на языке программирования PHP, которое реализует принципы кодирования информации, описанные в первой главе.

При написании курсовой работы в качестве основных источников использовалась следующая литература:

Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ.— М.: Мир, 1987. — 232 с. – издание старое, но актуальное. Так как, фундаментальных изменений в базовом языке программирования PASCAL не происходило.

Магда Ю. С. Ассемблер для процессоров Intel Pentium. – Спб.: Питер, 2006. – 410 с. – выбор этого источника в качестве базового обусловлен тем, что автор подробно излагает основы работы с двоичным кодом, рассматривает наборы команд Ассемблера для процессоров Intel, которые работают и в современных процессорах. Подробно рассмотрен процесс перевода из одной системы счисления в другую, а также алгоритмы хранения чисел в памяти компьютера.

Из интернет-источников следует выделить:

http://php.net – официальная документация по языку WEB-программирования PHP. Информация представлена на английском языке.

https://inf1.info – очень много информации по всем аспектам цифровой техники, по работе персональных компьютеров.

https://www.ixbt.com – старейший информационный интернет-портал по информационным технологиям и «железу».

Основная цель написания курсовой работы – получить более глубокие знания по работе с информацией, способами ее защиты.


1. Кодирование данных в ЭВМ

1.1. Двоичный код

Иероглифы или буквы алфавита (тридцать три если говорить о русском языке), десять цифр (от 0 до 9), широчайший диапазон звуков (от 16 до 20000 Гц.), палитра из семи цветов и миллионов их оттенков - вот средства которыми человек пользуется для записи и передачи воспринимаемой информации и первые из них существуют со времен древнего мира.

Помимо этих каналов мир представлен нам через обоняние, тактильные и вкусовые ощущения. Таким образом человеческий мозг имеет дело с невообразимым количеством импульсов, несущих информацию, воспринимает их, обрабатывает, хранит.

Если же говорить о технологиях[1] - мы видим совершенно иную картину. Лампа может излучать свет, а может не излучать, силовое поле может действовать, а может отсутствовать. А вот создать лампу, переливающуюся всеми цветами радуги - уже не тривиальная задача. Точнее сказать задача вполне решаемая если в основу положить простой принцип (что люди и сделали) в котором предпочтение отдается тому, чтобы иметь дело с множеством простых элементов[2] в противоположность малому количеству сложных.

Первые прообразы современных компьютеров появились еще в 19 веке. В 1835 году Чарльз Бэббидж[3] описал свою аналитическую машину. Это был проект компьютера общего назначения, с использованием перфокарт в качестве устройства ввода и носителя данных программы. В качестве источника энергии для работы данного устройства использовался паровой двигатель. Одной из базовых идей было применение шестерен для решения математических задач.

Его первоначальной идеей было применение перфокарт[4] для устройства, вычисляющего и печатающего логарифмические таблицы с большой точностью (то есть для специализированной машины). В дальнейшем данные идеи были развиты до машины общего назначения — его «аналитической машины».

Для ввода аналоговой информации с целью обработки, анализа и хранения используют АЦП (аналогово-цифровой преобразователь).

Для преобразования уже обработанной информации в аналоговый вид используют цифро-аналоговый преобразователь.

Аналого-цифровой преобразователь (АЦП, англ. Analog-to-digital converter, ADC) — устройство, преобразующее входной аналоговый сигнал в дискретный код (цифровой сигнал). Обратное преобразование осуществляется при помощи цифро-аналогового преобразователя (ЦАП, DAC). Как правило, АЦП — электронное устройство[5], преобразующее напряжение в двоичный цифровой код.


Так в основу информационных технологий, в основу хранения, обработки и передачи информации был положен двоичный код (его еще называют бинарным). Этот «язык» оперирует лишь двумя параметрами: «да» или «нет», ноль или единица.

Двоичный код[6] — это способ представления данных в виде кода, в котором каждый разряд принимает одно из двух возможных значений, обычно обозначаемых цифрами 0 и 1. Разряд в этом случае называется двоичным разрядом.

Процесс перевода информации (посредством устройств ввода, а именно камеры, микрофона и т. п.) в двоичный код называется кодированием. Обратный процесс - декодированием (декодирование происходит при выводе информации на монитор, принтер, аудио-динамики и т. п.).

Кодирование информации[7] — процесс преобразования сигнала из формы, удобной для непосредственного использования информации, в форму, удобную для передачи, хранения или автоматической переработки.

Если смотреть на принцип использования двоичного кода внутри вычислительной машины основывается на наличии или отсутствии специфических свойств у запоминающих элементов, которые могут быть фотооптическими, магнитными или электрическими или смешанного типа[8].

Фотооптические носители информации

Рабочая поверхность оптического диска (будь то CD, DVD или BluRay) представляет из себя спираль, состоящую из множества темных и светлых фрагментов. Во время работы CD-дисковода, когда диск очень быстро вращается лазерный луч фокусируется на спиральной дорожке. Далее, при попадании луча на темный фрагмент свет поглощается, при попадании на светлый - отражается и отраженный световой импульс улавливается фотоэлементом[9], за счет чего и осуществляется передача, закодированной посредством светлых и темных фрагментов информации.

В настоящее время оптические диски CD и DVD практически не применяются в бытовых компьютерах, т.к. объемы хранимой информации пользователем существенно превышают[10] 650 Мб (для CD) и 8,5 Гб (для двуслойных DVD). BluRay диски находят применение для хранения видеоконтента в высоком разрешении, а также выступают физическим носителем информации в игровых системах.

Магнитные носители информации

Основные рабочие элементы, например, жесткого диска[11] - вращающаяся с большой скоростью пластина и специальная считывающая головка, движущаяся по поверхности пластины. Поверхность пластины также представлена в виде спирали, состоящей из дискретных фрагментов, каждый из которых может принимать одно из двух состоянии, но на этот раз фрагмент может быть либо намагниченным, либо не намагниченным, реализуя таким образом значение (не буквально) либо 0, либо 1. Так информация кодируется в данном случае.


В связи с развитием технологий[12] стоимость хранения 1 Гб информации на SSD-накопителе существенно упала. Механические жесткие диски заменяют твердотельными накопителями. По сравнению с традиционными жёсткими дисками (HDD) твердотельные накопители имеют меньший размер и вес, являются беззвучными, а также многократно более устойчивы к повреждениям (например, к падению) и имеют гораздо большую скорость записи. В то же время, они имеют в несколько раз большую стоимость в расчете на гигабайт и меньшую износостойкость (ресурс записи).

Твердотельный накопитель[13] (англ. solid-state drive, SSD) — компьютерное энергонезависимое немеханическое запоминающее устройство на основе микросхем памяти, которое пришло на смену HDD.

Электрические носители информации

Для примера рассмотрим модуль оперативной памяти[14] компьютера (ОЗУ). Микросхема ОЗУ, опять же, состоит из большого количества крошечных фрагментов, реализованных посредством микроскопических транзисторов и конденсаторов. Каждый фрагмент может принимать одно из двух состояний, нести в себе электрический заряд или нет. Посредством комбинации таких фрагментов представлен двоичный код в этом случае. Таким же образом информация кодируется и в иных носителях (флеш-карты, HDD-диски, SSD-диски и т.п.).

Информацию, представленную в виде электрических импульсов двоичного кода, обрабатывает процессор[15].

1.2. Двоичный код и системы счисления

Двоичный код представлен в виде совокупности огромного количества мельчайших фрагментов. Для каждого такого фрагмента возможно только одно из двух состояний. Фрагменты, о которых здесь говорится называются битами. Для примера бит это каждый темный или светлый фрагмент спиралевидной дорожки оптического диска, каждая ячейка ОЗУ (оперативной памяти) и т.п.

Количество битов, содержащихся на том или ином носителе, определяет объем информации, которую можно на нем закодировать, так, например CD-диск может содержать до 6 млрд. битов, жесткий диск в 100 раз больше. Современные жесткие диски способны хранить до 15 Тб информации[16].

Один бит позволяет закодировать лишь одно из двух состояний (рис. №1).


Рис. №1 Хранение информации в 1 бит

В двух битах можно закодировать четыре состояния (рис. №2).

Рис. №2 Хранение информации в 2 бит

В трех битах можно закодировать одно из восьми состояний.

А в восьми уже - 256 состояний[17]!

В большинстве языков программирования текстовые строки представляют из себя массив символов, а символы в свою очередь кодируются блоком из 8 бит. Как пример, язык программирования PHP[18].

Байт - минимальная единица компьютерной информации.

Однако в связи с тем что работа обычно производится с большими (при счисления в байтах) объемами информации на практике чаще оперируют другими единицами измерения.

• килобайтами (1 килобайт = 1024 байт);

• мегабайтами (1 мегабайт = 1024 килобайт);

• гигабайтами (1 гигабайт = 1024 мегабайт);

• терабайтами (1 терабайт = 1024 гигабайт).

1.3. Кодирование числовой информации

Система счисления (англ. numeral system или system of numeration) — символический метод записи чисел[19], представление чисел с помощью письменных знаков.

В языках программирования высокого уровня чаще всего используют десятичную систему, как наиболее привычную. Для кодирования символьных значений иногда используют шестнадцатеричную систему счисления (целочисленное основание равно 16). Двоичная система получила распространение в основном в языках программирования низкого уровня (ассемблер[20]).

Команды языка ассемблера[21] один в один соответствуют командам процессора и, фактически, представляют собой удобную символьную форму записи (мнемокод) команд и их аргументов. Также язык ассемблера обеспечивает базовые программные абстракции: связывание частей программы и данных через метки с символьными именами и директивы.

Для представления одной из десяти цифр в десятичной системе счисления достаточно одного разряда, в то время как в двоичной потребуются четыре и таким образом для кодирования нужен будет носитель емкостью по крайней мере 4 бита.

Человеку привыкшему к десятичной системе по началу сложно оперировать в рамках двоичной, но в основе обеих систем лежит один и тот же принцип, отличие лишь в количестве используемых цифр и, если говорить о двоичной системе, необходимости оперировать большим количеством разрядов. К примеру, в восьми разрядах двоичной системы самое большое десятичное число - 255, в 16 разрядах – 65535.