>>4857311
>>4857323 всё правильно рассказал, но можно ещё дополнить, что даже без замены по словарю некоторые символы в тексте встречаются чаще других. А значит можно кодировать более частые символы меньшим количеством бит, а более редкие большим. Так работает код Хаффмана, хотя его суть как раз в том, как правильно выбрать эти самые битовые последовательности.
Ещё есть алгебраическое кодирование, суть примерно та же, но сложнее, поэтому сжимает сильнее.