Sei sulla pagina 1di 30

Rappresentazione dellinformazione

Informazione analogica e digitale


Rappresentazione dellinformazione
Il primo tipo di informazione che si presta ad essere
rappresentato rigorosamente linformazione numerica
n aste per rappresentare il numero n (numerazione unaria)
logk(n) + 1 cifre per rappresentare il numero n in base k
Bit = binary digit
Con un bit si possono rappresentare due informazioni
diverse
0/1, vero/falso, acceso/spento
1 byte = 8 bit
Informazioni pi complesse richiedono un numero
variabile di bit
Con N bit si possono rappresentare 2N informazioni diverse
N = 2 -> 00, 01, 10, 11
Informazione non numerica
Informazione testuale (caratteri)
Informazione grafica (forme geometriche)
Informazione musicale (digitalizzata o no)
Fotografie
Video
Testo
ASCII (American Standard Code for Information Interchange)
7 o 8 bit usati per rappresentare 128/256 caratteri
A ogni lettera (le maiuscole da A a Z, le minuscole da a a
z), cifra (da 0 a 9) separatore o simbolo viene assegnato
un numero naturale rappresentabile in forma binaria
Ad esempio A viene codificata in ASCII come numero 65 e la sua
forma binaria 01000001
Il separatore ; viene codificato come 59 e la sua forma binaria
00111011
Immagini
Quadradito = pixel
Ogni pixel pu assumere n colori diversi
2 colori (1 bit)
1024 colori (10 bit)
Esempio
RGB un modello di colori
Specifiche descritte nel 1931
da CIE (Commission
internationale de l'clairage)
Si basa sui tre colori rosso
(Red), verde (Green) e blu
(Blue)
Codifica
Numeri naturali
237 : 2 = 118 resto 1
118 : 2 = 59 resto 0
59 : 2 = 29 resto 1
29 : 2 = 14 resto 1
14 : 2 = 7 resto 0
7:2= 3 resto 1
3:2= 1 resto 1
1:2= 0 resto 1

1716150413120110 = 128+64+32+8+4+1 = 237


Generalizzabile ad altre basi
Da base due a base 8 (o 16) e viceversa pi facile. Perch?
Attenzione
Rappresentazione del numero 32: 100000
Servono 6 bit
Implicitamente sono 33 elementi diversi: da 0 a 32
log2(32) + 1 = 5+1
32 elementi diversi hanno rappresentazione da 0 a 31
Bastano quindi 5 bit -> log2(31) + 1 = 4+1
Primi esempi di rappresentazione
Con un byte possiamo rappresentare i numeri naturali da 0
a 255
0 k 2n-1 se n = 8: 0 k 255
010 = 000000002; 810 = 000010002; ; 25510 = 111111112
Oppure i numeri interi compresi fra 127 e 127
-(2n-1 -1) k 2n-1-1 se n = 8: -127 k +127
Primo bit = 0: numero positivo, primo bit = 1: numero negativo
1010 = 000010102 -1010 = 100010102
010 = 000000002 e -010 = 100000002
Operazioni elementari
Inversione di un bit
0 -> 1, 1 -> 0
Somma di due bit
0+0 = 0, 1+0 = 1, 0+1 = 1, 1+1 = 0 (1)
0*0 = 0, 1*0 = 0, 0*1= 0, 1*1 = 1

Se interpretiamo 0 come Falso e 1 come Vero, le operazioni di cui


sopra diventano operatori logici
Inversione = negazione, (NOT, )
Somma logica, (OR, )
Prodotto logico, (AND, )
Somma cifra per cifra
riporto 11100 00110000000100

8731 10001000011011

5698 01011001000010

risultato 14429 11100001011101


Modulo e segno
Dato un numero intero N, codificato su n bit, il bit pi
significativo rappresenta il segno
0 significa positivo e 1 negativo
I restanti n-1 bit rappresentano il valore assoluto del numero
N = 6 -> 3 bit + 1 per il segno -> 0110
N = -6 -> 1110
Problemi con le operazioni aritmetiche elementari
Analisi del segno
Confronto dei valori assoluti
Somma tra due numeri

segno A = segno B
NO

|A| > |B| |RIS| = |A| + |B|


NO SI

|RIS| = |B| - |A| |RIS| = |A| - |B| segno RIS = segno A

segno RIS = segno B segno RIS = segno A


Complemento a 1
Codifica diversa per semplificare lalgoritmo di calcolo
Non si distingue pi il segno dal modulo
Dato un numero N, il suo opposto si calcola complementando ad
uno ad uno tutti i bit che compongono il numero
N = 01001 -> -N = 10110
Somma e sottrazione richiedono solo sommatori e negatori (per il
calcolo dellopposto)
Il risultato corretto a meno di un 1 nel caso in cui si verifichi un
riporto nella somma stessa
Quindi si usa sempre una seconda somma per sommare il riporto
generato (fosse zero la somma sarebbe inutile)
Esempio
N = 011001 (+25) e M = 000011 (+3)
N + M = 011001 + 000011 = 011100 (+28)

K = 111100 (-3)
N + K = 011001 + 111100 = (1)010101
010101 + 000001 = 010110 (+22)

Numeri devono essere rappresentati con lo stesso numero di cifre


Sempre due somme
Non la soluzione ottima, ma la meno costosa
Complemento a 2
Ulteriore miglioramento con rappresentazione pi complicata
Somme algebriche con una sola addizione
Notazione non simmetrica (-2n-1 N 2n-1 -1)
Una sola codifica per il numero zero
Numeri positivi hanno sempre la stessa codifica
Numeri negativi
-N quel numero che sommato a N produce una configurazione di tutti zero e
un bit di riporto che si trascura
Operativamente
Complemento a 1 e poi si somma uno
Si scorre il numero da destra a sinistra, lasciando inalterate le cifre fino al primo uno
(compreso) e si complementano le altre
Esempio
N = 011001 (+25)
-N = 100110 + 000001 = 100111 oppure
-N = 100111
Salvo solo il primo uno e complemento tutto il resto

N = 011001 (+25) e M = 000011 (+3)


K = 111101 (-3)
N + K = 011001 + 111101 = (1)010110 = 010110 (+22)

M N = 000011 + 100111 = 101010 (-22)


010110 -> +22

Attenzione a leggere i numeri negativi


Confronto
Codifica Modulo e segno Complemento a 1 Complemento a 2

0000 +0 +0 +0
0001 +1 +1 +1
0010 +2 +2 +2
0011 +3 +3 +3
0100 +4 +4 +4
0101 +5 +5 +5
0110 +6 +6 +6
0111 +7 +7 +7
1000 -0 -7 -8
1001 -1 -6 -7
1010 -2 -5 -6
1011 -3 -4 -5
1100 -4 -3 -4
1101 -5 -2 -3
1110 -6 -1 -2
1111 -7 -0 -1
Numeri razionali
Virgola fissa
Si codificano separatamente la parte intera e la parte
frazionaria
Ad esempio
primo byte: rappresentazione parte intera
secondo byte: rappresentazione parte frazionaria
Virgola mobile
Mantissa e esponente (o caratteristica): r = m bn
Con b = 10: -331.6875 viene rappresentato m = -0.3316875 e
n=3
Conversione
23.47 = 2101 + 3100 + 410-1 + 710-2

10.012 = 121 + 020 + 02-1 + 12-2


= 12 + 01 + 0 + 1
= 2 + 0.25 = 2.25
0.58710
0.587 2 = 1.174: parte frazionaria 0.174 e parte intera 1
0.174 2 = 0.348: parte frazionaria 0.348 e parte intera 0
0.348 2 = 0.696: parte frazionaria 0.696 e parte intera 0
0.696 2 = 1.392: parte frazionaria 0.392 e parte intera 1
0.392 2 = 0.784: parte frazionaria 0.784 e parte intera 0
0.784 2 = 1.568: parte frazionaria 0.568 e parte intera 1
0.568 2 =

Precisione
0.1001 (con quattro cifre binarie dopo la virgola)
0.100101 (con sei cifre binarie dopo la virgola)
Virgola fissa (39.345)
Parte intera (39) Parte frazionaria (.345)
39:2 = 19 1 .345 x2 = .69 0
19:2 = 9 1 .69 x2 = 1.38 1
9:2 = 4 1 .38 x2 = .76 0
4:2 = 2 0 .76 x2 = 1.52 1
2:2 = 1 0 .52 x2 = 1.04 1
1:2 = 0 1 .04 x2 = .08 0
.08 x2 = .16 0

00100111 = 39 0.0101100 = 0.34375


Numero normalizzato (r = m n
b)
Si impone che m sia sempre minore di 1 e la sua cifra
decimale pi significativa sia sempre diversa da 0
0.45676 102 normalizzato
0.0456 103 non normalizzato
Un numero binario rappresentato in v.m. assume la forma
normalizzata:1.d-1d-2d-3...d-(p-1)2e
si rappresenteranno esplicitamente:
i bit dopo la virgola
l'esponente
il segno del numero
IEEE 754
lo standard pi diffuso per la rappresentazione dei
numeri in virgola mobile
Quattro formati per i numeri in virgola mobile:
a precisione singola (32 bit)
Un numero in virgola mobile rappresentato su parole
di 32, 64 o 128 bit divisi in tre parti: un bit di segno
(S), un campo esponente (E) e uno mantissa (M)
Precisione singola (32 bit): 1/8/23
Precisione doppia (64 bit): 1/11/52
(-1)S x 2E x M
S (segno): 0 positivo e 1 negativo
E (esponente in forma intera)
Permette di rappresentare 256 valori
I valori 0 e 255 vengono riservati per funzioni speciali
Gli altri permettono di rappresentare 254 valori per i numeri in forma
normale, compresi tra -126 e 127
Il campo rappresentato in eccesso k: E = e + k
Per i numeri a precisione singola, k uguale a 127
In questa rappresentazione, i valori dell'esponente compresi tra -
126 e 127 assumono invece i valori compresi tra 1 e 254,
eliminando la necessit di un bit riservato al segno
Mantissa
Il campo M rappresenta la sequenza di cifre dopo la
virgola
Tutte le mantisse sono normalizzate in modo che il numero
prima della virgola sia 1, per cui per un dato M il valore
corrispondente m = 1.M
La mantissa costituita dal numero binario 1, seguito
dalla virgola e dalla parte decimale del numero
rappresentato, in forma binaria
Esempio: -118.5
Numero negativo, quindi S = 1
Numero2: 1110110,1
Normalizzazione, spostiamo la virgola verso sinistra,
lasciando solo un 1 alla sua sinistra
La mantissa riempita con zeri a destra fino a riempire i 23
bit: 11011010000000000000000
L'esponente pari a 6, ma E = 6 + 127 = 133
In forma binaria: 10000101
Numeri reali
I numeri frazionari possono introdurre approssimazioni
Presenza di un numero limitato di cifre dopo la virgola

Numeri reali approssimati dai razionali

Potrebbero piacerti anche