Sei sulla pagina 1di 45

Corso di Informatica

Docente: Prof.ssa Alessia Amelio


A.A. 2021/2022 II semestre

Lezione 2: Rappresentazione dell’informazione e sistemi


numerici

1
Rappresentazione binaria
• Tutta l’informazione interna ad un computer è
codificata con sequenze di due soli simboli : 0 e 1
– è facile realizzare dispositivi elettronici che discriminano
fra due stati, molto meno se gli stati sono tanti
• L’unità elementare di informazione si chiama bit da
‘binary digit’

2
Rappresentazione binaria (2)
• Vedremo prima come rappresentare i numeri
come sequenze di 0 e 1

• E poi discuteremo la rappresentazione di insiemi


di oggetti finiti (caratteri, giorni della settimana,
operazioni elementari etc…)

3
Notazione posizionale in base 10
• Un numero (es. 5) può essere
rappresentato in molti modi:
– cinque, five, 5, V,
• Rappresentazioni diverse hanno
proprietà diverse
– moltiplicare due numeri in notazione romana
è molto più difficile che moltiplicare due
numeri in notazione decimale ….
• Noi siamo abituati a lavorare con numeri
rappresentati in notazione posizionale in
base 10 4
Notazione posizionale in base 10 (2)
• La rappresentazione di un numero intero in base 10 è una
sequenza di cifre scelte fra 0 1 2 3 4 5 6 7 8 9:
– es: 23, 118, 4
• Il valore di una rappresentazione cN…c0 è dato da
cN * 10N + cN-1 * 10N-1 ….+ c1 * 101 + c0 * 100
esempi :
– 23 = 2*101 + 3 * 100 = 20 + 3
– 118 = 1*102 + 1*101 + 8 * 100 = 100 + 10 + 8

5
Notazione posizionale in base 10 (3)
Vediamo alcune proprietà di questa notazione:

• Il massimo numero rappresentabile con N cifre è


99….9 (N volte 9, la cifra che vale di più), pari a 10N-1
– es: su tre cifre il massimo numero rappresentabile è 999 pari
a 103-1 =1000-1

6
Notazione posizionale in base 10 (4)
Vediamo alcune proprietà di questa notazione (cont.):
• Quindi se voglio rappresentare K diverse configurazioni
(cioè 0 1 2 …K-1) mi servono almeno almeno x cifre
dove 10x è la più piccola potenza di 10 >= K
– es : se voglio 25 configurazioni diverse mi servono almeno 2
cifre perché 102=100 è la più piccola potenza
di 10 maggiore di 25
7
Notazione posizionale in base 2
• La rappresentazione di un numero intero in base 2 è una sequenza
di cifre scelte fra 0 e 1:
– es: 10, 110, 1
• Il valore di una rappresentazione cN…c0 è dato da
cN * 2N + cN-1 * 2N-1 ….+ c1 * 21 + c0 * 20
esempi :
– 10 = 1*21 + 0 *20 = 2
– 110 = 1*22 + 1*21 + 0 * 20 = 4 + 2 + 0 = 6
– 1 = 1 *20 = 1

8
Notazione posizionale in base 2 (2)
Per la base due valgono proprietà analoghe a quelle
viste per la base 10 :
• Il massimo numero rappresentabile con N cifre è
11….1 (N volte 1, la cifra che vale di più), pari a 2N-1
– es: su tre cifre il massimo numero rappresentabile è 111
pari a 23-1 = 8 - 1 = 7

9
Notazione posizionale in base 2 (3)
Per la base due valgono proprietà analoghe a quelle viste per
la base 10 (cont.):
• Quindi se voglio rappresentare K diverse configurazioni
(cioè 0 1 2 …K-1) mi servono almeno almeno x cifre dove 2x
è la più piccola potenza di 2 >= K
– es : se voglio 25 configurazioni diverse mi servono almeno 5 cifre
perché 25=32 è la più piccola potenza di 2 maggiore di 25

10
Conversione da base 10 a base 2
Dato un numero X si cerca cN…c0 sua
rappresentazione in base 2
• Conversione per divisione :
– si divide ripetutamente X per 2
– il resto ottenuto nella divisione i-esima è la i-esima
cifra (ci) della rappresentazione binaria

11
Conversione da base 10 a base 2 (2)
Come si converte X nella sua rappresentazione in base 2 cN…c0
usando il metodo della divisione
• Es : convertiamo il numero 13
– 13 / 2 da quoziente 6 e resto 1 (c0)
– 6 / 2 da quoziente 3 e resto 0 (c1)
– 3 / 2 da quoziente 1 e resto 1 (c2)
– 1 / 2 da quoziente 0 e resto 1 (c3)
• La rappresentazione di 13 è 1101

12
La rappresentazione dei numeri
all’interno di un computer
• Usa la notazione binaria
• Ogni numero viene rappresentato con un numero finito
di cifre binarie (bit)
• Numeri di ‘tipo’ diverso hanno rappresentazioni diverse
– es. interi positivi, interi (pos. e neg.), razionali, reali,
complessi

13
La rappresentazione dei numeri
all’interno di un computer (2)
• Alcuni termini utili:
– byte : una sequenza di 8 bit
– word (parola) : 2 o 4 byte (dipende dalla macchina) unità
minima che può essere fisicamente letta o scritta nella
memoria
• Tipicamente gli interi positivi si rappresentano usando
2 o 4 byte
– es. il tipo unsigned int in C (interi senza segno)
usa di solito 4 byte 14
La rappresentazione dei numeri
all’interno di un computer (3)
• Alcuni punti importanti:
– se uso 4 byte (32 bit) posso rappresentare solo i numeri positivi da
0 a 232-1, che sono molti ma non tutti !
– se moltiplico o sommo due numeri molto elevati posso ottenere un
numero che non è rappresentabile
• es: vediamo cosa succede in base 10 con solo 3 cifre :
500 + 636 = 1136 risultato 136
se uso solo 3 cifre non ho lo spazio fisico per scrivere
la prima cifra (1) che viene ‘persa’, è un fenomeno
chiamato overflow 15
La rappresentazione dei numeri
all’interno di un computer (4)
• Interi positivi e negativi:
– es. il tipo int in C usa di solito 4 byte
– ci sono diverse convenzioni di rappresentazione
• es: modulo e segno in cui il primo bit viene riservato al
segno (1 negativo, 0 positivo) e gli altri 31 al modulo
– rimane il problema dell’overflow
16
La rappresentazione dei numeri
all’interno di un computer (5)
• Interi positivi e negativi:
Complemento a due
Stabilito il numero di bit, supponiamo n, il bit più significativo ha peso: -(2n-1)
Sulla base di questa considerazione possiamo riscrivere quella formula che, data
la sequenza di bit, mi esprimeva il valore vero del numero:
NV = - dn-1 2n-1 + dn-2 2n-2 + ...+ d0 20
Data una sequenza di bit che rappresenta un numero relativo
in complemento a due posso ricavare il valore vero del numero
sulla base della relazione appena esposta.
17
La rappresentazione dei numeri
all’interno di un computer (5)
• Interi positivi e negativi:
Complemento a due
Esempi:
N = 0101(C2) NV = -0 × 23 + 1 × 22 + 0 × 21 + 1 × 20 = 4 + 1 = 5
N = 1011(C2) NV = -1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = -8 + 2 + 1= -5
Sulla base degli esempi possiamo osservare che anche nella rappresentazione in
complemento a 2, così come valeva per la rappresentazione in modulo e
segno, il primo bit mi dice se il numero è positivo o negativo, in
particolare se il primo bit è 0 il numero è positivo, se il primo bit
è 1 il numero è negativo.
18
La rappresentazione dei numeri
all’interno di un computer (6)
• Razionali
– numero finito di cifre periodiche dopo la virgola (ad esempio 3.12 oppure
3.453
– rappresentazione solitamente su 4/8 byte
– rappresentazione in virgola fissa : riservo X bit per la parte frazionaria

Parte intera Parte frazionaria

– es : con 3 bit per la parte intera e 2 per quella frazionaria


011.11, 101.01
19
La rappresentazione dei numeri
all’interno di un computer (7)
• Come si converte in base 10 una rappresentazione in virgola
fissa
– es :
101.01 = 1* 22 + 0 * 21 + 1 * 20 + 0 * 2-1 + 1 * 2-2 =
= 4 + 1+ 0.25 = 5.25

dove 2-1 = 1/2 = 0.5, 2-2 = 1/22 = 0.25


e in generale 2-n = 1/2n
20
La rappresentazione dei numeri
all’interno di un computer (8)
• Problemi della rappresentazione in virgola fissa
– overflow
– undeflow quando si scende al di sotto del minimo
numero rappresentabile
• es. vediamo in base 10, con 2 cifre riservate alla parte
frazionaria 0.01/2 = 0.005 non rappresentabile
usando solo due cifre
21
La rappresentazione dei numeri
all’interno di un computer (9)
• Problemi della rappresentazione in virgola fissa (cont.)
– spreco di bit per memorizzare molti ‘0’ quando lavoro con numeri
molto piccoli o molto grandi
• es. vediamo in base 10, con 5 cifre per la parte intera e 2 cifre riservate alla
parte frazionaria
10000.00 oppure 00000.02
– i bit vengono usati più efficientemente con
la notazione esponenziale o floating point
(virgola mobile)
La rappresentazione dei numeri
all’interno di un computer (10)
La rappresentazione dei numeri
all’interno di un computer (11)
La rappresentazione dei numeri
all’interno di un computer (12)
• Rappresentazione in virgola mobile (cont.)
– ogni numero N è rappresentato da una coppia
(mantissa M, esponente E) con il seguente significato
N = M * 2E
– esempi:
1. in base 10, con 3 cifre per la mantissa e 2 cifre per l’esponente riesco a
rappresentare
349 000 000 000 = 3.49 * 1011
con la coppia (3.49,11) perché M = 3.49 ed E = 11
La rappresentazione dei numeri
all’interno di un computer (13)
• Rappresentazione in virgola mobile (cont.)
– esempi:
2. in base 10, con 3 cifre per la mantissa e 2 per l’esponente riesco a
rappresentare
0.000 000 002 = 2.0 * 10-9
con la coppia (2.0,-9) perché M = 2.0 ed E = -9
– sia 0.000 000 002 che 349 000 000 000 non sono
rappresentabili in virgola fissa usando solo
5 cifre decimali !!!
Rappresentazione di un insieme
finito di oggetti
• Vogliamo rappresentare i giorni della settimana :
{Lu, Ma, Me, Gio, Ve, Sa, Do}
usando sequenze 0 e 1
• Questo significa costruire un ‘codice’, cioè una
tabella di corrispondenza che ad ogni giorno associa
una opportuna sequenza
• In principio possiamo scegliere in modo
del tutto arbitrario….
Rappresentazione di un insieme
finito di oggetti (2)
• Una possibile codifica binaria per i giorni della
settimana
Rappresentazione di un
insieme finito di oggetti (3)
• Problema : la tabellina di corrispondenza fra codifiche tutte
di lunghezza diversa
– spreco di memoria
– devo capire come interpretare una sequenza di codifiche
– 110000011 = Me Gio Gio
– 110000011 = Gio Gio Do Gio
• Di solito si usa un numero di bit uguale per
tutti : il minimo indispensabile
Rappresentazione di un
insieme finito di oggetti (4)
• Per rappresentare 7 oggetti diversi servono almeno 3 bit
(minima potenza di due che supera 7 è 8= 23) quindi :
000 Lunedì 110 Domenica
001 Martedì 111 non ammesso
010 Mercoledì
011 Giovedì
100 Venerdì
101 Sabato
Rappresentazione di caratteri
e stringhe
• Le stringhe sono un insieme finito di oggetti e
seguono la strategia vista per i giorni della
settimana
• Perché due diversi calcolatori si possano
parlare correttamente è necessario che usino
lo stesso codice
Rappresentazione di caratteri
e stringhe (2)
• Codifiche di uso comune per i caratteri:
– il codice ASCII (American Standard code For Information
Interchange) su 7 o 8 bit
– il codice UNICODE su 16 bit (più recente, permette di rappresentare
anche alfabeti diversi e simboli per la scrittura di lingua orientali)
• Le stringhe sono generalmente sequenze di
caratteri terminate in modo particolare
Rappresentazione di caratteri
e stringhe (3)
• Codifiche di uso comune per i caratteri:
– il codice ASCII (American Standard code For Information
Interchange) su 7 o 8 bit
■ È un codice di 7 bit che offre dunque la possibilità
di esprimere 128 simboli diversi. In generale si
utilizza il codice ASCII esteso, che utilizza 8 bit, e
aggiunge altri 128 simboli specifici della nazione
in cui ci si trova o del sistema operativo che si
utilizza.
■ I primi 31 elementi del codice ASCII
rappresentano codici di controllo, ad esempio il
codice associato al valore 8 rappresenta il
Backspace.
Rappresentazione di immagini
• Le immagini sono un ‘continuo’ e non sono formate da
sequenze di oggetti ben definiti come i numeri e le stringhe
• Bisogna quindi prima ‘discretizzarle’ ovvero trasformarle in
un insieme di parti distinte che possono essere codificate
separatamente con sequenze di bit
• Consideriamo prima immagini fisse (foto etc …)
Rappresentazione di immagini (2)
• Immagini ‘bitmap’ :
1. l’immagina viene scomposta in una griglia di elementi detti pixel
(da picture element)
000000000000000000000000
000000000011111111000000
codifica 000000000010000010000000
000000000010000100000000
000000000010001000000000
000000000010010000000000 immagine
000000000010100000000000
000000000011000000000000
000000000010000000000000
Rappresentazione di immagini (3)

• Immagini ‘bitmap’ :
2. Ogni pixel è rappresentato da uno o più bit
000000000000000000000000
000000000011111111000000
000000000010000010000000
Rappresentazione 000000000010000100000000
di un pixel 000000000010001000000000
000000000010010000000000
000000000010100000000000
000000000011000000000000
000000000010000000000000
Rappresentazione di immagini (4)
• Rappresentazioni dei pixel :
– la rappresentazione in ‘toni di grigio’ : un byte per pixel, con 256
gradazioni di grigio per ogni punto (immagini bianco e nero), o più
byte per pixel, per avere più gradazioni possibili
– rappresentazione a colori RGB (red, green, blue): comunemente 3
byte per pixel che definiscono l’intensità di ciascun colore base. In
questo modo ho circa 16 milioni di colori diversi definibili
Rappresentazione di immagini (5)
• Problema :
– la rappresentazione accurata di una immagine dipende
• dal numero di pixel (definizione)
• dalla codifica del pixel
– … e richiede generalmente molta memoria, ad esempio :
tipo defin numero colori num. byte
imm. televisiva 720x625 256 440 KB
SVGA 1024x768 65536 1.5 MB
foto 15000x10000 16milioni 430 MB
Rappresentazione di immagini (6)
• Quindi si cerca di ‘risparmiare’ memoria :
– con l’uso di una ‘tavolozza’ (palette) che contiene il sottoinsieme dei colori
rappresentabili che compare in una foto
• ogni pixel codifica un indice all’interno della tavolozza
– con tecniche di compressione che non codificano ogni pixel in modo autonomo
ma cercano di raggruppare le aree che hanno caratteristiche comuni
• Formati più usati : TIFF (tagged image file format),
GIF (graphics interchange format), JPEG
(Joint photographers expert group)
Algebra di Boole
E’ un’algebra basata su tre operazioni logiche:

● OR
● AND
● NOT

Ed operandi che possono avere due soli valori:

● vero (1)
● falso (0).

Tramite questa algebra si possono comporre espressioni logiche che possono essere vere o false.

Ad esempio: (X AND Y) OR Z oppure (NOT A) OR B

40
Algebra di Boole (2)
Le operazioni dell’algebra di Boole sono definite tramite le Tavole di verità.

41
Algebra di Boole (3)

Esempi:

42
Algebra di Boole (4)
Esempio di una tavola di
verità per due espressioni
logiche:

43
Principali funzioni logiche
Porte Logiche

● Sono elementi circuitali che corrispondono alle operazioni logiche e che possono essere
combinati per effettuare operazioni più complesse.
● Ad esempio, tramite le porte logiche possono essere definiti circuiti sommatori.

44
Riferimenti Web
● Informatica Generale - Codifica e Rappresentazione dell’Informazione, Susanna
Pelagatti, Università di Pisa, 2002.

● Corso di Informatica Generale - Rappresentazione dei numeri relativi, Valerio


Lacagnina, Università di Palermo, 2003.

● Corso di Informatica Generale - Rappresentazione in virgola mobile, Valerio


Lacagnina, Università di Palermo, 2003.

45

Potrebbero piacerti anche