Codifica dell'informazione
Codifica: passaggio dal "mondo reale" al supporto fisico.
Decodifica: passaggio dal supporto fisico al "mondo reale".
Informazioni sui bit
1 byte = 8 bit
- 1 bit: 2 informazioni (0,1)
- 2 bit: 4 informazioni (00,01,10,11)
- 3 bit: 8 informazioni (000,001,010,100,011,101,110,111)
Range di valori rappresentabili su tot di bit: da 0 a (2n bit -1)
- 1 bit: da 0 a (21 – 1) = da 0 a 1
- 2 bit: da 0 a (22 – 1) = da 0 a 3
- 3 bit: da 0 a (23 – 1) = da 0 a 7
Overflow: quando il risultato non è rappresentabile dal numero di bit disponibili.
Codifica di numeri e caratteri
Codifica di numeri naturali: si usano successioni di 32 bit
Codice ASCII o Codifica ASCII: (anni '60) stabilisce le regole di codifica per lo scambio di informazioni fra vari dispositivi.
- Codice ASCII (codifica su 7 bit)
- Codice ASCII esteso (codifica su 8 bit) [aggiunta di uno 0 alla fine, per garantirne la compatibilità]
- Codifica UNICODE (codifica su 16 bit)
A – a = 32 per passare da "A" a "a" o viceversa, devo aggiungere/sottrarre 32.
Informazione analogica e digitale
Informazione analogica: è un'informazione che può assumere qualunque configurazione; perciò risulta impossibile distinguere il rumore del segnale.
Informazione digitale: l'informazione digitale può assumere solo 2 stati (0 e 1).
Codifica digitale:
- Vantaggi: si capisce su quale configurazione è intervenuto un errore
- Svantaggi: per unità di tempo, trasporta molta meno informazione [problema ormai bypassato dalla velocità dei processori]
Tv analogica: a volte si vede a righine
Tv digitale: non è possibile "si vede male", o si vede o non si vede
Processo di discretizzazione
Discretizzazione: passare da una "cosa" continua a una discreta.
Campionamento: processo che consiste nell'andare a prendere la grandezza fisica solo a certi istanti temporali.
Intervalli di campionamento
Istante di campionamento: momento in cui viene effettuata la rilevazione. Più sono piccoli e meno informazione viene perduta; ovviamente non posso andare all'infinito...
Quantizzazione: tiro delle righe e divido l'andamento della grandezza fisica in fasce. Come nel campionamento, anche discretizzando con la quantizzazione posso perdere informazioni.
Informazione pesante: se richiede tanti bit per essere memorizzata.
Sento meglio le variazioni delle basse frequenze: infatti qui le fasce di quantizzazione sono più strette (con più bit). [Alte frequenze: gli intervalli aumentano, tanto rilevo peggio le variazioni]
Suono: varia con continuità nel tempo [discretizzo nel tempo]
Immagini: variano con continuità nel tempo e nello spazio [discretizzo nel tempo e nello spazio, cioè tiro righe sia orizzontali che verticali, cioè divido l'immagine in pixel]
Formati per memorizzare immagini
2 blocchi di informazione:
- Testa o header: contiene dati per interpretare l'immagine; fra cui:
- Dove tagliare l'immagine
- Dimensione spaziale dell'immagine (= numero di righe e di colonne)
- Numero di bit per pixel (maggior numero di pixel: migliore risoluzione)
- L'immagine vera e propria (in bit)
2 modi di rappresentare le immagini:
- Immagini vettoriali: immagini descritte mediante un insieme di elementi grafici (punti, linee, archi, poligoni, ...).
- Immagini bitmap: immagini descritte attraverso funzioni matematiche.
- 8 bit per ogni RGB, 8 per trasparenze → 4 bit per ogni pixel
- Indice a una tavolozza di colori = rettangolo con vari colori, ognuno ha il suo codice; i bit dietro ogni pixel contengono la codifica del colore
Proprietà codifica delle immagini:
- Risoluzione: numero di pixel per unità di superficie (più sono, più dettagli ho)
- Profondità: (del colore) numero di bit per ogni pixel (più sono, più colori posso fare) [dipende dal formato]
Algoritmi di compressione dati
Ridurre le dimensioni del file. [zip]
- Algoritmi di compressione lossless: "senza perdita"; quando decomprimo l'informazione, è uguale all'originale.
- Algoritmi di compressione lossy: "con perdita di informazione"; quando decomprimo, l'informazione è diversa da quella iniziale. Esempi: mp3, jpeg → eliminano quello che non vediamo / sentiamo
Istruzioni e processore
Istruzioni aritmetico – logiche: + - * /
Istruzioni logiche: AND, OR, NOT
Istruzioni di controllo: istruzioni che alterano l'esecuzione sequenziale. Se "sì", fa una cosa; se "no", ne fa un'altra.
Il processore
Processore o CPU: interpreta ed esegue successioni di istruzioni, scritte in linguaggio macchina.
Dati e istruzioni sono memorizzati nella RAM; vengono recuperati in base alla loro posizione; le istruzioni vengono eseguite in modo sequenziale.
Fasi di esecuzione
- Fase di fetch: RAM → bus → processore
- Fase di decode: la CU decodifica
- Fase di execute: la ALU esegue (l'unica fase a tempo variabile)
CPU = data path + CU
- Coordina le operazioni di tutto il processore
- Regola il flusso di dati + indica quali registri devono essere collegati agli ingressi e all'uscita della ALU
- Invia alla ALU il codice dell'operazione da eseguire
- Riceve il feedback finale dalla ALU
Si occupa dell'effettiva elaborazione dei dati.
ALU registri (1 o più): il "foglio di lavoro" della ALU: R01, R02, R03, ...
IR (Instruction Register): Contiene l'informazione che la CU deve codificare, per poi essere eseguita.
PC (Program Counter): Un "segnalibro", sa qual è la successiva operazione da eseguire; l'istruzione è contenuta nell'indirizzo della cella della RAM.
PSW (Process Status Word): Contiene il feedback inviato dalla ALU alla CU per segnalare l'indirizzo di memoria in cui è presente l'informazione.