Esercitazione n. 8

Rappresentazione delle informazioni: un po' di conti

Sappiamo che le informazioni vengono rappresentate su un calcolatore attraverso l'uso di codici.

Tali codici vengono espressi come sequenze di simboli; ogni simbolo è scelto all'interno di un alfabeto che contiene una scelta di b diversi simboli (cardinalità dell'insieme).

Le sequenze sono poi assunte lunghe N simboli, in modo da poter rappresentare un numero finito di diverse informazioni. Ovviamente la scelta di b e N vincola il numero di informazioni rappresentabili.

Vediamo ora qualche calcolo che occorre fare per capire quanto spazio ci occorre per determinate categorie di informazioni.

Codici generici

Quando un codice è rappresentato con un alfabeto di cardinalità b e parole di codice di lunghezza N, sappiamo che possiamo rappresentare un n. di distinti messaggi pari al più a
n = bN

Problema opposto: se la cardinalità è b, quanto devono essere lunghe le parole di codice per poter rappresentare un numero n di messaggi?

Basta invertire la formula e si ottiene

N = ceil(logbn)
dove la funzione ceil() è l'arrotondamento al numero intero superiore più vicino. Infatti, anche se il logaritmo può in generale dare risultati con parte frazionaria, il nostro numero risultante deve essere per forza intero.

Caso particolare: b = 2. Allora le formule restano come sopra:

n = 2N e N = ceil(log2n)
ma i calcoli sono più semplici perchè le potenze in gioco sono sempre le stesse. Negli appunti c'è una tabella di utili valori di comuni potenze di 2.

Notiamo poi che se abbiamo codici composti da varie parti, ciascuna delle quali adotta alfabeti di cardinalità diversa, non dobbiamo fare altro che considerare singolarmente le varie parti e poi fare il prodotto.

Esercizi

  1. Se le targhe italiane sono rappresentate come XX NNN XX, dove: quante automobili si possono immatricolare?
  2. Quanti bit servono per rappresentare con un codice binario univoco ogni italiano? (Nell'ipotesi che gli italiani siano 60 milioni)
  3. Voglio assegnare i numeri di telefono a una zona geografica abitata da 30000 persone. Quante cifre deve avere al minimo un numero di telefono?
  4. Quanti prefissi teleselettivi sono possibili in teoria, sapendo che sono composti da zero seguito da al massimo 3 cifre?
  5. Quanti bit servono per rappresentare 16,7 milioni di colori? E quanti colori si rappresentano con codici a 16 bit?
  6. Se un chip (circuito integrato) di memoria RAM ha un bus degli indirizzi a 16 bit, quante celle di memoria può contenere al massimo?

Numeri

I numeri si rappresentano con codici binari. Anche in questo caso, abbiamo un numero finito di numeri rappresentabili.

Quando cerco di rappresentare un numero che non rientra nella gamma rappresentabile, per esempio a seguito di una operazione aritmetica (somma di numeri grandi), si ha una situazione di traboccamento. I bit in eccesso non stanno nelle parole di codice e debordano.

Per questo caso si usa il termine inglese overflow.

Esempio: abbiamo parole di 4 bit:

    1 1 0 1 + 
    0 0 1 1 =
   --------
  1 0 0 0 0
In questo caso abbiamo overflow perchè il risultato dell'operazione non si può più rappresentare con 4 bit.

Nel calcolare i valori rappresentabili dobbiamo scrivere il valore massimo e il minimo, non il numero di possibili valori. Quindi, per esempio, il massimo intero senza segno in n bit non vale 2n, ma vale

2n-1
perchè il minimo vale 0.

Adottando questo ragionamento, ricordiamoci che, nelle rappresentazioni in valore e segno e in complemento a due, un bit è dedicato al segno, e quindi i valori rappresentabili sono (grosso modo):

Esercizi

  1. Dei seguenti numeri interi senza segno, scrivere quali sono rappresentabili in 8 bit, e quali invece danno luogo a overflow
                            100 256 1000 120
    
  2. Dei seguenti numeri rappresentati in modulo e segno, scrivere quali sono rappresentabili in 8 bit, e quali invece danno luogo a overflow
                            100 -256 1000 -120 -8 0
    

Dati multimediali

I dati multimediali sono dati composti, o strutturati, nel senso che sono rappresentati in funzione di dati più semplici.

Ricordiamo che il campionamento va effettuato a una frequenza almeno doppia di quella massima che intendiamo rappresentare. Questo (teorema di Nyquist-Shannon) ci interessa soprattutto nel caso di segnali audio, per sapere, data la massima frequenza utile, quanti campioni al secondo dobbiamo mettere in conto.

A proposito di segnali di natura acustica, ricordiamo che l'audio può essere multicanale, ossia per esempio stereofonico (2) o surround (5.1, 7.1). Dobbiamo quindi considerare, in questi casi, tanti flussi audio indipendenti quanti sono i canali. 5.1 = 6 canali e 7.1 = 8 canali.

Quindi, per esempio, per l'audio stereo dobbiamo fare tutti i calcoli, e alla fine moltiplicare per 2.

Anche nel caso delle immagini siamo in una situazione multicanale, in quanto spesso i singoli pixel contengono i valori relativi a tre canali (o componenti) dell'immagine: rosso, verde e blu (R/G/B).

Ovviamente possiamo memorizzare solo l'intensità luminosa, ossia un unico canale, e ottenere un'immagine che occupa un terzo della memoria.

Per i video, infine, si devono fare le considerazioni che si fanno sulle immagini, ma poi bisogna moltiplicare l'occupazione per il numero di immagini individuali (frame) visualizzate al secondo.

Lo standard televisivo è 25 fps (frame per second) e quello cinematografico 24 fps, ma sono possibili minori valori se si accetta minore qualità.

Una volta calcolato il numero di campioni (nel modo appropriato per il particolare tipo di dato multimediale), occorre sapere quanti bit o byte occupa un singolo campione.

Infine, occorre applicare la compressione, ossia dividere l'occupazione ottenuta per un fattore che viene fuori dall'algoritmo di compressione e in realtà non è noto a priori (anche se noi lo diamo negli esercizi).

Esercizi

  1. Una canzone di 3 minuti e mezzo viene rippata da un CD e trasformata in un file mp3. Si ottiene un fattore di compressione di 1:20. Sappiamo che il CD è campionato a 44.1 KHz e usa 16 bit per campione, e ovviamente è stereo. Quanto occupa il file mp3?
  2. Una immagine fotografica di 1000x1500 pixel è compressa in jpeg e occupa 120 KB. Sapendo che in jpeg ogni pixel usa 8 bit per componente per le 3 componenti RGB, qual è il fattore di compressione?
  3. Un filmato in qualità quasi-PAL (480x640 pixel per frame, RGB a 8 bit per componente) dura 20 secondi. Sapendo che il fattore di compressione è 1:80 (non è così strano: motion compensation!), quanto occupa il file risultante?