Store edb-programmer og filer ofte indeholder for mange data til nemt overføre eller gemme dem . For at løse dette problem, har programmører kommet op med geniale algoritmer eller systemer til at komprimere og dekomprimere filer. De bruges til at formindske størrelsen på billedet , video, software og andre filer, så de bliver lettere anvendelige. Compression
komprimering algoritme specifikt behov for en ordbog kode og et output buffer , der er 50 procent større end de data . Data matches og krympes derefter ned til sin forenklet form . For eksempel, hvis du har en 32 byte stykke kode, der kan matche en 16 byte , så du er i stand til at reducere den hukommelse det halve. En komprimeringsarkiv test for at forenkle hele din kodebase .
Dekompression
dekompression er en lille smule enklere end komprimering , fordi det ikke kræver en bestemt hukommelse. Når du dekomprimere du blot afgøre, om data er en match eller bogstavelig. Hvis det er en match, så dekompression er unødvendigt, og dataene er kopieret fra den sidste buffer. Hvis det er en bogstavelig , så du indkode forskellen til output buffer.
Compression Code
En algoritme til at komprimere data bruger pegepinde til at identificere hukommelse placering, svarer til dataene , og derefter trække den ekstra kode , når det er komprimeret. Så " hvis - ellers " algoritmisk funktion kan vises som følger : Hej
if ( valid_pointer ( kamp) && * match == * input && * ( match + 1) == * (indgang + 1 )) { if ( bogstavelig < input) OutputLiteral ( bogstavelig , indgang - bogstavelig ) } else + + indgang;
dekompression Code
dekompression kode på den anden side blot kopierer bogstavelig koden, så den kan gengives i en output buffer på et passende tidspunkt . Derefter fratrækker den ekstra hukommelse fra programmet. Den " if- mens" funktionen vises muligvis som følger : Hej
mens (input < ende) {if ( * input & 0x80 ) {//matchlength = DecodeLength (& input) , offset = DecodeOffset (& input ) //samme algoritme som DecodeLengthwhile ( længde - > 0) { * output = * (output - forskydning ) + + output;