grands programmes et fichiers informatiques contiennent souvent trop de données à transmettre facilement ou de les enregistrer . Pour résoudre ce problème , les programmeurs ont mis au point des algorithmes ou des systèmes ingénieux pour compresser et décompresser des fichiers . Ils sont utilisés pour diminuer la taille des fichiers image , vidéo, logiciels et autres afin qu'ils puissent être plus facilement utilisable. Compression
un algorithme de compression doit spécifiquement un dictionnaire de code et un tampon de sortie qui est de 50 pour cent plus grande que les données. Données est adaptée et ensuite rétréci vers le bas de sa forme simplifiée. Par exemple, si vous avez un morceau octet 32 du code qui peut correspondre à un 16 octets , alors vous êtes en mesure de réduire la mémoire de moitié. Un fichier tests de compression pour simplifier l'ensemble de votre base de code . Décompression
de décompression est un peu plus simple que la compression , car il ne nécessite pas un emplacement mémoire spécifique. Lorsque vous décompressez -vous simplement à déterminer si les données sont un match ou littéral. Si c'est un match , puis décompression n'est pas nécessaire et les données sont copiées à partir du dernier tampon. S'il est un littéral, alors vous encodez le différentiel à la mémoire tampon de sortie. Compression code
Un algorithme pour compresser les données utilise des pointeurs pour identifier la mémoire l'emplacement, match les données, puis soustraire le code supplémentaire une fois qu'il est compressé. Ainsi, le «si - autre " fonction algorithmique peut apparaître comme suit :
code de décompression en revanche ne fait que copier le code littéral pour qu'il puisse être reproduit dans un tampon de sortie au moment opportun . Il soustrait ensuite la mémoire supplémentaire du programme. Le " si - alors " fonction peut apparaître comme suit:
while ( entrée < fin ) {if ( * Entrée & 0x80 ) {//matchlength = DecodeLength ( et entrée) ; offset = DecodeOffset ( et entrée) ; //même algorithme que DecodeLengthwhile (longueur -> 0) { * output = * ( sortie - offset) ; + + sortie;