Компьютерное железо

Как работают программы-архиваторы?

Что конкретно делают программы-архиваторы когда сжимают файлы и делают из них свой архив? Уменьшаю картинки, снижают качество музыки, портят качество видео? Интересно то, как например из 120 мегабайт они делают в архиве, например, 110 мегабайт и куда деваются эти 10 мегабайт и что с ними происходит?
Думаю ответ будет интересен очень многому количеству людей, поэтому отвечайте развернуто, не ссылаясь на источники где это можно прочесть. Благодарю, всех с наступившим новым годом, крепкого здоровья, больше денег, больше удовольствия.
"Жизнь измеряется не прожитыми годами, а моментами от которых захватывает дух" (с) Уилл Смит (к\ф "Съем: Правила съема Метод Хитча).
К сожалению коротко ответить нельзя. Чтобы было понятно, надо начинать "от печки". Одни файлы можно сжать без ущерба для качества, другие просто невозможно сжать. В принципе проблема сжатия файлов сейчас не так актуальна. Сейчас никого не удивишь носителями по 100 и больше терабайт. Архивирование по большей части нужно для установки пароля (без сжатия)
Сергей Лепкин
Сергей Лепкин
95 634
Лучший ответ
На винчестере инфа храниться в виде единичек и ноликов. В файле их последовательность может повторятся несколько раз. Принцип архиватора: удалить избыточную информацию, при этом записать в служебной части архива каким образом удалось достичь сжатия. Исходный файл и тот, который получен после извлечения из архива, идентичны (при условии что процесс сжатия прошел без ошибок) . Например текстовая инфа уменьшится в архиве на несколько порядков, тогда как мультимедиа/программы/другие архивы это уже сжатые данные (тут теряется эффективность архиватора).
они работают примерно так.
например 000000000111100000000
можно записать как 9 нулей, 4 единицы и 8 нулей.
или (9)0 (3)1 (8)0
и программа вычисляет чего больше единиц или нулей, в нашем случае нулей больше, значит сжимать будем нули. Сжатие это уменьшения единиц и нулей. мы можем сжать тольуо информацию о нулях. о них мы знаем что их 9 и 8. Эти числа надо перевести в двоичный код- 9=00100010, 8=00100001
таким образом мы сжали 000000000111100000000 в 00100010 1111 00100001
после сжатия у нас стало на 1 знак меньше. с большими текстами это работает лучше до 33х раз можно их сжать.

Похожие вопросы