Prof. Pagani corrado LA CODIFICA DELLE INFORMAZIONI · moltiplicando ogni cifra del secondo fattore...

40
LA CODIFICA DELLE INFORMAZIONI Prof. Pagani corrado

Transcript of Prof. Pagani corrado LA CODIFICA DELLE INFORMAZIONI · moltiplicando ogni cifra del secondo fattore...

LA CODIFICA DELLE INFORMAZIONI

Prof. Pagani corrado

DATI E INFORMAZIONI

Spesso i termini informazione e dato sono usati come sinonimi

L’informazione è ciò che si ottiene dall’elaborazione di uno o più̀ dati accresce il nostro stato di conoscenza rispetto a un fenomeno

La conoscenza infatti aumenta se riceviamo un dato e …

la relativa chiave di lettura (contestualizzazione)

non aumenta se manca uno di questi elementi !!

DATO

Un dato (dal latino datum, «fatto») è la rappresentazione di un fenomeno che siamo interessati a osservare

Un dato preso al di fuori del suo contesto non è interpretabile, manca il suo significato, quindi non accresce la conoscenza

ANALOGICO E DIGITALE

Misurazione digitale misurazione basata su

un insieme discreto (quindi finito) di valori

numerici

Il termine deriva dall'inglese digit, che significa cifra

Misurazione analogica misurazione basata

su un insieme continuo (quindi infinito) di valori

Il termine deriva dal fatto che si utilizza una

grandezza fisica analoga a quella che si vuole

misurare al fine di effettuare la misurazione stessa

ANALOGICO E DIGITALE: ESEMPI

Il termometro a mercurio rappresenta il valore della temperatura in base alla lunghezza (grandezza analoga) della colonnina di mercurio In teoria non ci sono limiti alla precisione

delle rappresentazioni analogiche

ad ogni minima variazione di temperatura si ottiene un’analoga variazione della dimensione della colonnina di mercurio.

Il termometro digitale rappresenta la temperatura in gradi e decimi visualizzandola sul display

Questo termometro non è in grado di misurare variazioni di temperatura inferiori al decimo di grado poiché la sua rappresentazione si basa su un insieme discreto composto da multipli dell’unità di base, nel nostro caso decimi di grado.

ANALOGICO E DIGITALE: ESEMPI

Il suono su disco in vinile è riprodotto analogicamente l'informazione sonora è letta per mezzo di una puntina che scorrendo sul solco inciso genera vibrazioni derivanti dall'irregolarità del solco i suoni riproducibili sono teoricamente infiniti

Su un compact disc il suono è memorizzato in formato digitale il suono è campionato, ad intervalli regolari, dal valore descritto da una sequenza di bit e dalla frequenza di campionamento e per ciascun canale stereo I bit sono incisi sul disco in un'unica traccia lunga oltre 5 km sotto forma di zone più o meno riflettenti la luce (rappresentanti gli stati 0 e 1).

ANALOGICO O DIGITALE ?

In prima analisi si potrebbe affermare che le rappresentazioni digitali risultano più approssimate di quelle analogiche, ma in realtà la situazione è opposta.

Perché? la “precisione” digitale (dimensione del digit) può essere modificata

aumentando sensibilmente la qualità della rappresentazione

C’è un problema legato alla effettiva valutazione di una rappresentazione analogica (se le differenze sono minime risultano impercettibili all’essre umano);

In realtà si va verso un “mondo digitale” e, come vedremo, le informazioni di qualunque tipo vengono con sempre maggiore frequenza rappresentate in modo digitale ed in particolare binario.

SISTEMI DI NUMERAZIONE

Sistema di numerazione l’insieme degli oggetti e delle

regole atte a rappresentare le grandezze numeriche

Sistemi Posizionali il valore delle cifra dipende dalla

posizione che occupa

Il sistema decimale è un sistema di numerazione

posizionale in base 10

Usa 10 simboli detti cifre

Spostare tutte le cifre vs destra (o sinistra) equivale a

dividere (o moltiplicare) per la base (in questo caso 10)

Esempio 72310 = 7*102+ 2*101+ 3*100

Posizione della cifra partendo a contare da 0 ed

ottenendo i valori positivi verso sinistra base

IL SISTEMA NUMERICO BINARIO

Il sistema numerico binario utilizza solo 2 cifre (1 e

0) per poter rappresentare un dato.

E’ un sistema posizionale

Esempio 10012 = 1*23+ 0*22+ 0*21+ 1*20=8+0+0+1

= 910

Questi valori, all'interno dell'architettura dei

calcolatori, sono abbinati a due tensioni differenti

denominate livello logico alto e livello logico basso

(o VERO e FALSO secondo la logica Booleana).

In pratica abbiamo fatto la conversione del

numero binario nel sistema decimale !!

CONVERSIONE BINARIO DECIMALE

Occorre moltiplicare ogni cifra per la base elevata alla sua posizione

Esempi:

10112 = 1*23+ 0*22 + 1*21 + 1*20 = 1*23+ 1*21

+ 1*20 = 8 + 2 + 1 = 1110

10111002 = 1*26+ 0*25 + 1*24 + 1*23 + 1*22 + 0*21 + 0*20 = 1*26+ 1*24 + 1*23 + 1*22 =

= 64 + 16 + 8 + 4 = 9210

Esercizi:

1100 1110011 10000

10101010 110011 10001

CONVERSIONE DECIMALE BINARIO

Occorre dividere (divisione intera) ripetutamente il numero per 2 fino a raggiungere il quoziente di zero; il numero convertito è dato dalla successione dei resti presi in ordine inverso

Esempi:

Esercizi: 5 34 92

128 144 200

Risultato:

100111

Risultato:

1001001

SISTEMI DI NUMERAZIONE E CALCOLATRICE

COSA CAMBIA PER I NUMERI REALI ?

Conversione binario decimale Si applica il procedimento standard ricordandosi di

numerare le posizioni decimali con esponente negativo

Conversione decimale binario Si converte la parte intera con il procedimento standard

Si converte la parte decimale moltiplicandola successivamente per 2, e prendendo ogni volta la parte intera del risultato come cifra binaria; si procede finché non si ottiene zero (risultato esatto) o si ottiene un numero sufficiente di cifre (risultato approssimato).

Esempio 9,38 Parte intera 910=10012

0.38*2= 0.76 prendo 0 0.76*2= 1.52 prendo 1

0.52*2=1.04 prendo 1 0.04*2=0.08 prendo 0

0.08*2=0.16 prendo 0 ….. Risultato 1001.0110 …

OPERAZIONI BINARIE

Somma Si procede come nel

caso decimale stando

attenti a usare i riporti

se il totale provvisorio

supera il valore di 1

Sottrazione Si procede come nel

caso decimale stando

attenti alla

gestione dei

prestiti

Prestito

di una cifra

da sinistra:

10 – 1 = 1

OPERAZIONI BINARIE

Moltiplicazione Si procede come nel sistema decimale

moltiplicando ogni cifra del secondo fattore

per tutte le cifre del primo.

Si procede poi operando la somma binaria.

Divisione Si procede come nel caso decimale abbassando

un numero di cifre del dividendo in grado di

contenere il divisore; si scrive la prima cifra

del quoziente, si effettua la moltiplicazione

della cifra del quoziente per il divisore, si

incolonna sotto le cifre del dividendo e si

effettua la sottrazione. Si procede finché

non si esauriscono le cifre del dividendo.

1010 *

101 =

------------

1010

0000--

1010—--

----------------

110010

11011 : 11

11 -----------

- - 0 1001

00

- -1

00

-11

11

- -

SISTEMA DI NUMERAZIONE ESADECIMALE

Il sistema numerico esadecimale (abbreviato come esa o hex) è un sistema numerico posizionale in base 16.

Usa i simboli da 0 a 9 per le prime dieci cifre, e poi le lettere da A a F per le successive sei cifre, per un totale di 16 simboli.

0 1 2 3 4 5 6 7 8 9 A B C D E F

Esiste una analogia tra il sistema binario e esadecimale (e anche ottale) perché sono entrambi sulle potenze del 2 Ogni cifra nel sistema esadecimale corrisponde

univocamente a 4 cifre consecutive nel sistema binario (e viceversa)

CONVERSIONE BINARIO – ESADECIMALE

Esadecimale Binario:

F416 111101002

A5B16 1010010110112

Binario Esadecimale :

1100102 posso aggiungere zeri a

sinistra 00110010 3216

10111002 5C16

CONVERSIONE ESADECIMALE – DECIMALE

Si procede in modo analogo rispetto alla conversione da binario a decimale

12B16= 1 * 162 + 2 * 161 + 11 * 160 =

= 256 + 32 + 11 = 29910

FA016= 15 * 162 + 10 * 161 + 0 * 160 =

= 3840 + 160 + 0 = 400010

Esercizi: D3A 1A00

FF E001

CONVERSIONE DECIMALE – ESADECIMALE

Si procede in modo analogo rispetto alla conversione da decimale a binario, dividendo questa volta per 16

7810 78 : 16 = 4 resto 14 (E)

4 : 16 = 0 resto 4

risultato 4E16

72410 724 : 16 = 45 resto 4

45 : 16 = 2 resto 13 (D)

2 : 16 = 0 resto 2

risultato 2D416

MEMORIZZAZIONE DEI DATI SU COMPUTER

I computer hanno una memoria finita l’insieme dei dati che si possono rappresentare è finito

Abbiamo già visto che tutti i dati usati dai computer sono in forma codificata basata sul sistema binario (cifre 0 e 1)

Poiché in un bit è possibile rappresentare 2 soli simboli, per poter rappresentare un numero maggiore di informazioni si ricorre a sequenze di bit

Il processo attraverso cui si fa corrispondere ad una informazione una configurazione di bit prende il nome di codifica dell’informazione

MEMORIZZAZIONE DEI DATI SU COMPUTER

Con il termine byte si intende la sequenza ordinata di 8 bit, che può assumere 256 (28) configurazioni di bit diverse

Esempio 10011100

Ogni tipologia di dato segue regole specifiche per la propria memorizzazione in base al formato scelto per rappresentare il dato stesso

Il problema della codifica solitamente trae spunto dalla domanda: quanti bit (o byte) mi occorrono per rappresentare il mio dato ? Ad esempio quanti byte uso per rappresentare un numero intero?

RAPPRESENTAZIONE DEI NUMERI INTERI

Solitamente un numero intero occupa 2 byte (16 bit)

In 2 byte è possibile rappresentare 216 combinazioni diverse. Ma poiché un bit è usato per il segno e volendo rappresentare anche lo zero, il massimo intero rappresnetabile risulta 215 – 1 = 32767 (mentre il minimo è - 32768)

Se si vuole allargare l’intervallo dei numeri rappresentabili è possibile utilizzare 4 byte (tipo long int)

Nel caso si voglia rappresentare un numero più grande o più piccolo di tali limiti si incorre in un errore di overflow

NUMERI INTERI NEGATIVI

Vedremo due tipi di codifica per i numeri interi

negativi

Bit e segno

Complemento a due

BIT e SEGNO

Riserviamo il primo bit per il segno:

0 = positivo

1 = negativo

Le operazioni di somma e differenza devono essere

implementate in modo differente sul processore!

COMPLEMENTO A DUE

Come prima, il bit più significativo settato a 1 rappresenta un valore negativo

Il complemento a 2 di un numero di n bit si ottiene eseguendo la sottrazione tra 2n e il nostro numero composto da i n bit rimanenti

Il metodo empirico più facile per svolgere la sottrazione è invertire tutti i bit (da 1 a 0 e viceversa) e sommare 1

Esempio: Numero da complementare: 1011001

10000000 – 1011001 0100110 01001101

Inverto le cifre Sommo 1

COMPLEMENTO A DUE – VANTAGGI

Attraverso la rappresentazione dei numeri negativi in complemento a 2 e trascurando opportunamente i riporti fuori dal nostro intervallo di bit è possibile ricondurre l’operazione di sottrazione ad un somma

E’ più facile riconoscere l’overflow una somma di due numeri di n cifre in complemento a 2 dà (errore di) overflow se e solo se i riporti in colonna n e n +1 sono diversi

COMPLEMENTO A DUE – ESEMPIO

Eseguire la sottrazione tra i numeri 13 e 6 in

binario

Eseguo la differenza tra

13 e 6

00001101 –

00000110 =

00000111

Eseguo la somma tra 13 e

6 (in complemento a 2)

Complemento a 2 di 110

11111010

Eseguo la somma

00001101 +

11111010 =

00000111

Esercitazione: Svolgere

almeno 3 sottrazioni con

entrambi i metodi

COMPLEMENTO A DUE – OVERFLOW Overflow se i riporti in colonna n e n +1 sono diversi

Con 8 bit posso rappresentare i numeri tra -128 e 127

Non è possibile andare in overflow facendo la somma di un numero positivo ed uno negativo (che non siano già in overflow)

Somma di numeri positivi

01001101 + 77 +

01000110 = 70 =

010010011 147

Owerflow perdo il bit del

segno, infatti:

il Riporto in 7a colonna = 1

Riporto in 8a colonna = 0

Somma di numeri negativi

10001101 + -115 +

10100110 = - 90=

100110011 -205

Owerflow perdo il bit del

segno, infatti:

Riporto in 7a colonna = 0

Riporto in 8a colonna = 1

COMPLEMENTO A DUE TRASFORMAZIONI

Vediamo in dettaglio le trasformazioni dell’esercizio della slide precedente:

11510 011100112 inverto le cifre 10001100 sommo 1 ottengo il complemento a 2 10001101

9010 010110102 inverto le cifre 10100101 sommo 1 ottengo il complemento a 2 10100110

100110011 inverto le cifre 011001100 per determinare il corrispondente numero positivo sommo 1 ottengo il complemento a 2 011001101 20510

NUMERI REALI

I numeri reali possono essere rappresentati con 2 modalità: Virgola fissa (fixed point)

Virgola mobile (floating point)

Virgola fissa Utilizzando N cifre si assume che la posizione della

virgola sia fissa in un preciso punto della sequenza. Quindi si assegnano k cifre per la parte intera e N-k cifre per la parte inferiore all’unità. Potrebbe essere necessario troncare la precisione della parte

inferiore all’unità (anche in presenza di molti 0)

Si può facilmente andare incontro ad errori di overflow

Esempio con un byte (8 bit) a disposizione (k = 5) 111.1 00111.100

NOTAZIONE ESPONENZIALE

Per ovviare a questi problemi si ricorre alla rappresentazione con virgola mobile normalizzata che si rifà alla notazione esponenziale

Notazione esponenziale (o scientifica) è una riscrittura compatta del numero come prodotto tra un opportuno numero decimale tra 1 (incluso) e 10 (escluso) e una potenza di 10 con esponente intero.

La virgola è sempre a destra della prima cifra non negativa

Esempi

2345.67 2.34567 * 103

0.0001234 1.234 * 10-4

Una notazione analoga è possibile anche nel sistema binario.

FLOATING POINT

Sfruttando la notazione esponenziale, per memorizzare un numero reale, ci occorrono 3 dati:

Il segno 1 bit

La sequenza di cifre che compongono il numero denominata mantissa

NON ci serve la posizione della virgola che sarà sempre a destra della prima cifra non negativa

NEL CASO BINARIO NON ci serve la prima cifra del numero che sarà sempre 1

Il valore dell’esponente da dare alla base 2

Per memorizzare queste informazioni utilizziamo 32 bit (4 byte) così divisi

1 bit (Segno) + 23 bit (mantissa) + 8 bit (esponente)

FLOATING POINT

Si noti che i valori dell’esponente variano da 0 a 255, ma a noi interessano anche i valori negativi per definire numeri più piccoli di 1 ! Per risolvere sottraiamo 127 al valore dell’esponente memorizzato i nuovi valori varieranno da -126 a 127 I due valori estremi sono utilizzati per i casi speciali 0 e ±∞

(-1)s * 1.m * 2e

s segno m mantissa e esponente

Il valore più piccolo in valore assoluto rappresentabile è

1*2-126 ≈ 1,175 * 10-38

Configurazione 0 00000001 00000000000000000000000

s e m

Il valore più grande in valore assoluto rappresentabile è 1.11…*2127 ≈ 1,90 * 1038

Configurazione 0 11111110 11111111111111111111111

s e m

DOUBLE PRECISION

Il formato in virgola mobile estende considerevolmente il campo numerico rappresentato, ma non evita del tutto il problema dell’overflow

Si presenta anche il nuovo problema dell’underflow, ossia l’impossibilità di rappresentare numeri più piccoli di un certo valore assoluto

E’ possibile utilizzare un formato con doppia precisione double

FLOATING POINT - ESERCIZI

Determinare i valori nel sistema decimale delle seguenti rappresentazioni in floating point: s = 1 e = 10000111 m = 11011000000000000000000

s = 0 e = 11100101 m = 10110010100000000000000

s = 1 e = 00000101 m = 11011000000000000000000

Rappresentare i seguenti numeri decimali in virgola mobile in singola precisione

−23.37510

−127.2510

+131.510

FLOATING POINT ESERCIZI SVOLTI

s = 1 e = 10000111 m = 11011000000000000000000

Trasformo in decimale

e = 1+2+4+128 = 135 135 – 127 = 8

m = 0,5 + 0,25 + 0,0625 + 0,03125 = 0,84375 1,84375

Eseguo la formula

-1 * 1,84375 * 28 = – 472

−23.37510

s = 1

Converto in binario

23.3751 10111,011 notazione esp 1,0111011 con esponente 4 esponente da memorizzare 4 +127 = 131

e = 10000011

m = 0111011

FLOAT CONVERTER

https://www.h-schmidt.net/FloatConverter/IEEE754.html

CARATTERI ALFANUMERICI

Il termine "alfanumerico" è l'abbreviazione di alfabetico e numerico e sta ad indicare l'insieme delle lettere dell'alfabeto latino e dei numeri arabi, nonché degli altri simboli comuni utilizzabili per la scrittura (punteggiatura …).

In generale viene usata la codifica standard ASCII (American Standard Code Information Interchange): ogni carattere è rappresentato in 1 byte e quindi possiamo rappresentare 256 caratteri diversi.

CODIFICA ASCII

CODIFICA ASCII

Come si può osservare lo standard ASCII copre

solo il primi 128 caratteri (primo bit = 0)

I successivi 128 costituisco la tabella ASCII estesa

che presenta varie versioni a carattere nazionale

Disponendo di un solo byte può essere

problematico rappresentare tutte le varianti

disponibili

UNICODE

Unicode è un sistema di codifica che assegna un numero univoco ad ogni carattere usato per la scrittura di testi, in maniera indipendente dalla lingua, dalla piattaforma informatica e dal programma utilizzato.

È stato compilato e viene aggiornato e pubblicizzato dall'Unicode Consortium.

Utilizza 2 byte, quindi 216 = 65536 combinazioni possibili