En dator zips en fil (eller en samling filer) som innehåller mycket information med
förlustfria kompressionsalgoritmer . Dessa algoritmer fungerar genom att identifiera och ta bort redundans i uppgifterna utan att förlora någon av den ursprungliga informationen. När du packar upp filen rekonstrueras originaldata perfekt.
Här är en uppdelning av processen:
1. upptäckt av redundans: Komprimeringsalgoritmen analyserar data och letar efter upprepande mönster, sekvenser av liknande data eller förutsägbar information. Till exempel kan en textfil ha många upprepade ord eller fraser, en bild kan ha stora områden med liknande färg, och ett program kan ha block med repetitiv kod.
2. Datatransformation: När redundans har identifierats omvandlar algoritmen data till en mer kompakt representation. Detta innebär ofta tekniker som:
* körlängd kodning (RLE): Ersätter upprepande sekvenser av tecken eller byte med en räkning och det upprepade elementet. Till exempel blir "AAABBBCC" "3A3B2C".
* huffman kodning: Tilldelar kortare koder till mer frekventa dataelement och längre koder till mindre frekventa. Detta minskar den totala storleken på data.
* ordbokskodning (LZ77, LZ78, LEMPEL-ZIV): Bygger en ordbok med tidigare mött datasekvenser. Istället för att lagra sekvensen upprepade gånger hänvisar algoritmen sekvensens inträde i ordboken, vilket minskar redundans avsevärt. Detta är en kärnkomponent i många populära kompressionsalgoritmer som deflate (används i ZIP).
* Burrows-Wheeler Transform (BWT): Ombeställer data för att skapa långa körningar av liknande tecken, vilket gör det enklare för andra kompressionstekniker att fungera effektivt. Detta används i algoritmer som BZIP2.
3. Datakodning: De transformerade uppgifterna kodas sedan i ett binärt format, ofta inklusive en rubrik som innehåller metadata som de ursprungliga filnamnen, storlekarna, tidsstämplarna och komprimeringsmetoden som används.
4. lagring: De komprimerade uppgifterna, inklusive rubriken, är skriven till ZIP -filen.
Varför är det effektivt med stora filer?
Ju mer data det finns, desto mer troligt är det att innehålla redundans. Kompressionsalgoritmer är mycket effektiva för att utnyttja denna redundans. En stor fil kommer sannolikt att ha många upprepande mönster eller förutsägbara sekvenser, vilket möjliggör minskningar av betydande storlek. Till exempel kommer en stor textfil som innehåller en upprepad fras att komprimera mycket mer effektivt än en kort, unik textfil.
Kort sagt, att zippa en fil krymper inte magiskt * Informationen * -innehållet, det gör bara en mer * effektiv * representation av den informationen genom att ta bort redundansen. Ju mer redundans, desto större kompressionsförhållande.