Köfi, és miért jó, ha duplázunk távolság, és hossz értékeket, mint pl 112233456?
Ez a lehetséges értékek statisztikai eloszlásától függ, az egyik vagy a másik kódolás eredményezhet jobb file méretet. Elvileg egy adott érték kódolása N biten akkor optimális, ha 1/2^N valószínűséggel fordul elő (1 bit: 50%, 2 bit: 25%, stb.). A számsorok értelmezésére példák a hosszúságnál:
01234567:
1b: 1 (1 bit, 50.0000%)
01xb: 2-3 (3 bit, 12.5000%)
001xxb: 4-7 (5 bit, 3.1250%)
0001xxxb: 8-15 (7 bit, 0.7813%)
00001xxxxb: 16-31 (9 bit)
000001xxxxxb: 32-63 (11 bit)
0000001xxxxxxb: 64-127 (13 bit)
00000001xxxxxxxb: 128-255 (15 bit)
00000000b: EOF
12345678:
1xb: 1-2 (2 bit, 25.0000%)
01xxb: 3-6 (4 bit, 6.2500%)
001xxxb: 7-14 (6 bit, 1.5625%)
0001xxxxb: 15-30 (8 bit, 0.3906%)
00001xxxxxb: 31-62 (10 bit)
000001xxxxxxb: 63-126 (12 bit)
0000001xxxxxxxb: 127-254 (14 bit)
00000001xxxxxxxxb: 255-510 (16 bit)
00000000b: EOF
00112233:
1b: 1 (1 bit, 50.0000%)
01b: 2 (2 bit, 25.0000%)
001xb: 3-4 (4 bit, 6.2500%)
0001xb: 5-6 (5 bit, 3.1250%)
00001xxb: 7-10 (7 bit, 0.7813%)
000001xxb: 11-14 (8 bit, 0.3906%)
0000001xxxb: 15-22 (10 bit)
00000001xxxb: 23-30 (11 bit)
00000000b: EOFA távolság formátuma kissé eltér, mivel itt általában kevésbé egyenetlen az eloszlás, erre is egy példa:
23456789:
000xxb: 1-4 (5 bit, 3.1250%)
001xxxb: 5-12 (6 bit, 1.5625%)
010xxxxb: 13-28 (7 bit, 0.7813%)
011xxxxxb: 29-60 (8 bit, 0.3906%)
100xxxxxxb: 61-124 (9 bit)
101xxxxxxxb: 125-252 (10 bit)
110xxxxxxxxb: 253-508 (11 bit)
111xxxxxxxxxb: 509-1020 (12 bit)77777777-nél 1 és 1024 között minden egyszerűen 10 bites lenne. Ugyanezt jelenti a 8888 és 99 is. Az ilyen fix hosszúságú kód ugyan többnyire nem optimális, de néha jó lehet, esetleg rövidebb/gyorsabb lehet a kicsomagoló rutin. Ha a sebesség a fontos, akkor helyette megadható "R" is, ami szintén 10 bites, de az alsó 8 bit ilyenkor egyszerű byte amit nem kell bitenként olvasni. A "Q" hasonló, de 9 bites (1 bit + 1 byte), az "S" 11 bites, stb.