Rank: Member
Iscritto dal : 2/16/2006 Posts: 0
|
Ciao a tutti. sono nuova del forum e avrei una curiosità:qualcuno sa dirmi come fanno i programmi di compressione come winzip a far diminuire la grandezza del file? grazie
|
Rank: Member
Iscritto dal : 10/30/2005 Posts: 0
|
Premetto che non è un argomento che si possa liquidare in due righe; per capire gli algoritmi che sono alla base dei cosiddetti “programmi di compressione”, bisogna avere delle basi molto solide di programmazione in Assembler e conoscere,in profondità, la struttura dei byte. Se, quindi, mi concedi il beneficio dell’inventario, proverò a spiegare PER SOMMI CAPI il principio su cui si basano questi utilissimi software. Dobbiamo fare un passo indietro ………..partiamo subito dal dire che il nostro pc è una macchina estremamente stupida !!!!! ebbene sì, il nostro pc capisce SOLO DUE SIMBOLI !!!!! Il primo ( lo zero “0” ) simboleggia “ assenza di tensione ; il secondo(uno“ 1 “ ) simboleggia, al contrario, presenza di tensione. Ognuno di questi simboli viene chiamato bit ( binary-digit). Un carattere, sia numerico che alfabetico che alfanumerico ( un carattere alfanumerico è, ad esempio, una virgola….un punto esclamativo….ecc….ecc….) è rappresentato da una sequenza di 8 bit ( veramente ne sarebbero 9………ma il nono non ha peso sul contenuto…). Facciamo un esempio e poniamo che il simbolo alfabetico “ a “ sia così composto :
0 0 1 0 1 1 0 1
l’insieme di questi 8 bit viene definita “ byte”.
Dividiamo il byte dell’esempio in due metà :
0 0 1 0 la prima parte ci indica IL TIPO DI CARATTERE ( alfabetico,numerico o alfanumerico);
1 1 0 1 la seconda parte, invece, ci da l’indicazione del carattere ( in questo caso è una “ a” ).
I programmi di compressione, mettono in evidenza i primi quattro bit e dicono alla macchina : “ guarda che TUTTI i dati che seguiranno, fino a nuovo avviso, saranno TUTTI dello stesso tipo ( saranno, cioè, o tutti numeri o tutte lettere e così via)”. Si evince facilmente che in queste condizioni, un solo byte conterrà non più un solo carattere…..ma ne conterrà due !!!!!! Mi spiego meglio : abbiamo visto che i primi 4 bit servono a dire, alla macchina, di “cosa stiamo parlando”…………ma, se la macchina già lo sa, allora li potremo utilizzare per un altro carattere……alla fine, il primo byte conterrà l’indicazione del tipo di carattere…..mentre gli altri che lo seguiranno, conterranno DUE caratteri ciascuno. Questo, ripeto, è un esempio molto semplificato di come sia possibile ridurre il peso di un file di testo; se, ad esempio, provi a comprimere un file .jpeg, scoprirai che non c’è stata riduzione di peso……..questo perché un file .jpeg è già un file compresso. Mi rendo conto che la chiarezza è estranea a questa mia spiegazione (^.^) ma, per capire meglio l’argomento, bisognerebbe partire dalla struttura del singolo BIT. Una curiosità: all’inizio ho detto che i BIT che compongono un byte sono, in realtà, 9 ……e che il nono BIT non ha peso sul dato….perché? Il nono BIT, detto anche BIT di controllo, serve a verificare se, durante la trasmissione di un file ci sono stati errori; esso non è altro che un controllo ( di parità o disparità) sulla somma binaria degli altri 8 BIT. Esempio:
00101110 >>>> il nono BIT sarà 0 perché l’ultima cifra della somma dei singoli byte è 0 ; 00100110 >>>> il nono BIT sarà 1 perché l’ultima cifra della somma dei singoli byte è 1.
Quindi, se sul byte 00101110 insisterà un nono BIT di tipo “1” vuol dire che esiste un errore.
Sigh……fammi sapere se sono stato chiaro……..
|
Rank: Member
Iscritto dal : 2/16/2006 Posts: 0
|
Peppe54 grazie!!! sono una studentessa di informatica, avevo questo dubbio e non ero mai riuscita ad avere una risposta convincente!! sm@k!!!
|
Rank: Member
Iscritto dal : 10/30/2005 Posts: 0
|
Assolutamente felice di averti aiutata. Augurissimi per i tuoi studi.
|