Например, частотный алгоритм Хафмана (Huffman).
Анализируется входной файл (или его фрагмент), составляется список всех встреченных байт с частотой появления этого байта в файле. Потом каждому байту подбирается заменяющий его код, причём чем чаще байт встречается в файле, тем короче код замены (от 2 бит). Таким образом байт (8 бит) заменяется на последовательности меньше 8 бит. Конечно, для тех байт, которые встречаются редко, код замены будет длиннее 8 бит (10-20), но поскольку байты с высокой частотой будут заменяться последовательностями меньше 8 бит, общий размер файла уменьшается.
Если интересуют подробности - ищи
алгоритм Хафмана