Другие языки программирования и технологии

Когда архивируешь файлы говорят они "сжимаются", как это происходит без потери данных ?

Это объяснить на пальцах сложно.
По умолчанию данные записываются данные так, как будто там есть все возможные символы, и причём поровну. Но это же не так. И за счёт отказа записи неиспользуемых символов можно уже сжать текстовые файла раза в 2-3.
Есть и другие виды сжатия, например, не каждую точку на рисунке записывать, а большие площади записать однократно.
Можно также сжимать данные, помещающиеся в 1, 2, 4 байта если им выделено больше памяти (но, обычно, это замедляет комп).
-
Рискну пример в цифрах.
Вы пишите текст. Там 64 буквы, 10 цифр, знаки препинания и т. д. Латиницу вы не используете. Вам хватит 100 знаков. Их можно записывать 7 битами (потому что 2^7=128>100). Но по умолчанию считается, что всего символов 250, и надо 8 бит. Вот если вы будете писать не по байтам (по 8 бит), а по 7 бит подряд, вы займёте меньше места в 7/8 раза. Теоретически.
Александр Оберемок
Александр Оберемок
73 496
Лучший ответ
Сжатие данных проще всего объяснять на примитивных методах сжатия.
Н-р RLE. Хорошо сжимает однородные последовательности. Описывать тупо, т. к. есть Вики и алгоритм очень простой.
https://ru.wikipedia.org/wiki/Кодирование_длин_серий
Когда разберетесь как работает:
https://ru.wikipedia.org/wiki/Метод_сжатия_с_использованием_словаря
Когда разберетесь с принципом:
https://ru.wikipedia.org/wiki/LZ77
Кст вся суть практически видна в примере abracadabra =)

Ну а там можно и LZW разобрать и более навороченное, если интерес сохранится.
Н-р 7zip использует LZMA.
Максим Ка
Максим Ка
84 764
Добавлю к вышесказанному еще один вариант. Предположим в тексте часто встречается одно и то же слово. Что мешает первое встреченое члово оставить а на последующих словах указать ссылку на первое слово. Размер ссылки зависит от количества слов в тексте...
NB
Nurik Baltabaev
15 388

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