programas informáticos y archivos grandes a menudo contienen demasiados datos para transmitir fácilmente o guardarlos . Para resolver este problema , los programadores han ideado algoritmos ingeniosos o sistemas para comprimir y descomprimir archivos . Se utilizan para disminuir el tamaño de la imagen, video, software y otros archivos para que puedan ser más fácilmente utilizable. Compresión
Un algoritmo de compresión necesita específicamente un diccionario de código y un búfer de salida que es 50 por ciento mayor que los datos . Los datos se igualó y luego reducido hasta su forma más simplificada . Por ejemplo , si usted tiene un pedazo de 32 bytes de código que puede coincidir con una de 16 bytes , entonces usted es capaz de reducir la memoria a la mitad. A las pruebas de compresión de archivos para simplificar su base de código completo .
Descompresión
descompresión es un poco más simple que la compresión , ya que no requiere de una posición de memoria específica. Al descomprimir simplemente determinar si los datos son de un partido o literal. Si se trata de una coincidencia, la descompresión es innecesario y se copian los datos de la última memoria intermedia. Si se trata de un literal , entonces se codifica el diferencial en el búfer de salida.
Compresión Código
Un algoritmo para comprimir datos utiliza indicadores para identificar la memoria ubicación , que coincida con los datos y luego restar el código adicional una vez que se comprime . Así que el " if - else" función algorítmica puede aparecer como sigue :
if ( && valid_pointer ( partido ) * partido == * && entrada * ( partido + 1 ) == * (entrada + 1 )) { if ( literal < input) OutputLiteral ( literal , de entrada - literal ) ; } else + + entrada ;
descompresión Código
código de descompresión en el otro lado simplemente copia código literal para que pueda ser reproducida en un búfer de salida en el momento apropiado . A continuación, se resta la memoria adicional del programa. El " caso - , mientras que" la función puede aparecer como sigue:
while ( input < end) {if (* Entrada y 0x80 ) {//matchlength = DecodeLength ( y entrada ) ; offset = DecodeOffset ( y entrada ) ; //mismo algoritmo que DecodeLengthwhile (longitud -> 0 ) { * output = * (salida - desplazamiento ) ; + + salida;