Зачем и как сжимать данные?
Практическая работа № 5 «Использование архиватора»
• сжатие данных
• коэффициент сжатия
• сжатие без потерь
• сжатие с потерями
• архивация
• самораспаковывающийся архив
• программа-архиватор
• контрольная сумма
Для того чтобы сэкономить место на внешних носителях (жёстких дисках, «флэшках») или ускорить передачу данных по компьютерным сетям, можно сжать данные — уменьшить их информационный объём, сократить размер файла.
Как вы уже знаете, рисунки часто хранятся в сжатом виде. Кроме того, сжатие почти всегда используется при хранении и передаче звука и видео — упаковку и распаковку этих данных выполняют специальные программы-кодеки.
Покажем, как можно сжать данные, на простом примере. Есть файл, в котором в 8-битной кодировке записаны сначала 100 русских букв А, а потом — 100 букв Б (рис. 2.39).
Рис. 2.39
Каждая буква на рис. 2.39 занимает 8 бит. Определите информационный объём файла в байтах.
Теперь запишем те же самые данные иначе: сначала количество повторений первого символа, а затем — сам первый символ, потом так же для второго символа (рис. 2.40).
Рис. 2.40
Каждая ячейка на рис. 2.40 занимает 8 бит. Определите информационный объём файла в байтах.
Объём файла уменьшился, это значит, что мы сжали данные.
Коэффициент сжатия — это отношение размера исходного файла IO к размеру сжатого файла IСЖ: kсж = IO / IСЖ
Определите коэффициент сжатия файла в рассмотренном выше примере.
Почему же этот файл удалось так удачно сжать? Всё дело в том, что в нём были длинные цепочки повторяющихся символов, и мы применили алгоритм, который очень удачно их сжимает. Этот алгоритм называется кодированием цепочек одинаковых символов (по-английски — RLE 1) : Run Length Encoding).
1) Алгоритм RLE можно успешно использовать для сжатия рисунков, в которых большие области закрашены одним цветом.
В файле записаны 100 различных символов. Определите коэффициент сжатия файла с помощью алгоритма RLE. Что означает полученное число?
Данные можно сжать, если в них есть какие-то закономерности (избыточность), например одинаковые символы, стоящие рядом, или одинаковые цепочки символов («слова»). Поэтому хорошо сжимаются данные, в которых таких закономерностей много, например тексты и рисунки. Хуже всего сжимаются случайные данные, в которых нет ничего закономерного.
Программы для сжатия данных выявляют избыточность данных и устраняют её, поэтому сжимать второй раз уже сжатые данные чаще всего бесполезно.
Следующая страница Сжатие без потерь