Rappresentazione
dell’informazione nel calcolatore.
Alessandro Bozzola
MATERIALE TRATTO DA:
http://webcen.usr.dsi.unimi.it/infogenerale/
http://www.lta.disco.unimib.it/didattica/InfoGen/
Introduzione

A livello di circuiti logici i calcolatori
memorizzano (e rappresentano) valori basati
su bit, gestiscono quindi zeri(Vlow)e uni(Vhigh).
 Poiché a noi interessa memorizzare ed
elaborare numeri, parole, immagini, suoni,
ecc. Occorre progettare un sistema che
consenta di rappresentare le informazioni
interessanti in termini di bit (forma binaria).
Introduzione (cont…)

Vedremo quindi come si rappresentano le
informazioni fondamentali: numeri e caratteri.
 Daremo dei cenni sulla rappresentazione di
informazioni più sofisticate e complesse.
La rappresentazione dei numeri

Cominciamo con i numeri interi non negativi
(numeri naturali + lo zero)
 Gli interi non negativi sono rappresentabili con
diverse notazioni:


additiva romana: I, II, III, IV, V, .... IX, X, XI...
posizionale indo-araba: 1, 2, .. 10, 11, ... 100,
Il valore dei numeri dipende da regole specifiche
della rappresentazione.
Notazioni posizionali

Ogni simbolo contribuisce con un valore che
dipende dalla sua posizione e dalla base di
rappresentazione B.
 Ad esempio, dato il numero (dk dk-1...d1 d0) in
una base qualsiasi B, troviamo il valore
espresso in base 10 dalla formula:
d 0 B  d1B  d 2 B  d 3 B  ...
0
1
2
3
Notazione posizionale decimale
Per noi è consuetudine rappresentare i numeri con
la notazione posizionale decimale, che utilizza le 10
cifre 0,1,..9 (numeri arabici).
Un numero è rappresentato da una sequenza di
cifre, posizionale significa che il valore di ogni cifra
dipende dalla sua posizione all'interno della
sequenza, ad esempio:
E' possibile scegliere il numero di cifre
differenti che si usano in una notazione
posizionale, e tale numero prende il nome
di base; in ogni numero decimale (in base
dieci) la cifra all'estrema destra ha il valore
minore (cifra meno significativa) , quella
all'estrema sinistra il valore maggiore (cifra
più significativa).
In genere si usano anche numerazione
binaria in base 2, ottale in base 8,
esadecimale in base 16.
Altre basi

Ogni numero è esprimibile in modo univoco
in una qualunque base:
Stringa
13
13
13
13
–
Base Calcolo del valore
4
4*1+3
8
8*1+3
10
10 * 1 + 3
16
16 * 1 + 3
Valore in base 10
7
11
13
19
Basi di particolare interesse:
 base B=2 due sole cifre: 0 e 1
 base B=8 otto cifre: 0, 1, 2, 3, 4, 5, 6, 7
 base B=10 dieci cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
 base B=16 sedici cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A,
B, C, D, E, F
Conversioni tra basi differenti:

Algoritmo delle divisioni successive
Dato un numero N in base dieci, per convertirlo
in una stringa di caratteri che ne rappresenti la
codifica in base B si opera per divisioni
successive, calcolando i caratteri della stringa
dal meno significativo al più significativo.
Esempi, da base 10 a base 2:
Convertiamo (11)10 in base 2.
N
resti
11
1
5
1
2
0
1011 = 1*2^3+0*2^2+1*2^1+1*2^0 =
0
1
= 8 + 2 + 1 = 11
Esempio da base 10 a 16 e
viceversa:
• Conversione del numero 44 in base 16
44:16 = 2
con resto 12 dove
1210corrisponde a C16
2:16 = 0
con resto 2
Quindi 4410 corrisponde a 2C16.
Verifica: 2 * 16^1 + C * 16^0 = 32 + 12 = (44)10
Un altro esempio:
Convertiamo (49)10 in base 2..
N
resti
49
1
24
0
12
0
110001 = 1+16+32 = 49
6
0
3
1
1
1
0
Vediamone un altro:
Convertiamo (57)10 in base 4.
N
resti
57
1
14
2
3
3
321 = 3*4^2+2*4^1+1*4^0 =
0
= 3*16+2*4+1 =
= 48 + 8 +1 = 57
Conversione tra ottale,
esadecimale e binario
I sistemi di numerazione ottale ed
esadecimale hanno la proprietà di
convertirsi in modo facile in binario e
viceversa. Infatti, una cifra ottale
richiede esattamente tre cifre binarie per
la sua rappresentazione, mentre una
cifra esadecimale richiede quattro cifre
binarie per la sua rappresentazione.
Per esempio, il numero ottale 1238 si converte
facilmente in 0010100112:
il numero esadecimale 3C16 si converte facilmente in 001111002
Tabella riassuntiva: conversione rapida
binario-ottale, binario-esadecimale:
Conversioni per numeri frazionari:
E' importante far notare che per i numeri interi si usa il
metodo appena descritto delle divisioni successive; per i
numeri frazionari si usa per la parte a sinistra della
virgola (parte intera) il metodo dellle divisioni successive
e per la parte a destra dellla virgola (parte frazionaria)
il metodo delle moltiplicazioni successive.
Con tale metodo si prende come cifra binaria la parte
intera e si moltiplica per 2 la parte decimale fino a
quando la parte frazionaria è diventata nulla o quando
si sia trovato un numero sufficiente di cifre binarie.
Metodo delle moltiplicazioni
successive:
• Conversione del numero 0.65625 in base 2
0.65625*2 =
0.31250*2 =
0.62500*2 =
0.250*2 =
0.5*2
=
1.31250
0.62500
1.250
0.500
1.00
con resto 1
con resto 0
con resto 1
con resto 0
con resto 1
Il risultato è: 0.6562510 = 101012
Operazioni nel sistema di
numerazione binario:
Somma:
0+0 = 0
0+1 = 1
1+0 = 1
1+1 = 0 con riporto 1
Per la somma di due numeri positivi di lunghezza K possono essere
necessari K+1 bit. Se sono disponibili solo K cifre si genera un
errore di overflow (o trabocco).
Esempio di somma binaria:
A = 110112 =2710
B = 001102 =610
overflow
Verifica:
1 1 0 1 12+
0 0 1 1 02 =
-------------1 0 0 0 0 12
2710 + 610 = 3310
1000012 = 1*2^5 + 1* 2^0 = 1* 32 + 1 * 1 = 3310
Prodotto:
0*0 = 0
0*1 = 0
1*0 = 0
1*1 = 1
Esempio:
A =10112=1110
B = 11012=1310
1011*
1101=
----------1011 +
00000 +
101100 +
1011000
-------------10001111
Sottrazione:
0-0=0
1-1=0
1-0=0
0 - 1 = 0 con prestito di uno.
Esempio:
A =11002= 1210
B =00112= 310
11002 –
00112=
--------1001
Divisione:
La classica domanda "quante volte il dividendo sta in una certa
parte del divisore", può solo avere due risposte: 0, cioè non ci sta,
oppure 1, cioè ci sta, perché è più piccolo.
Esempio:
A =100101102=15010
B =11002
= 1210
100101102 : 11002 = ?
Procedimento della divisione:
- Si cerca la prima parte del dividendo che sia maggiore del divisore.
Tale prima parte è nel nostro caso 10010, e dobbiamo scrivere 1 al
quoziente, calcolando il resto come differenza 10010-1100.
Si ottiene 110…
10010110 : 1100
1100
----------------1
110
Procedimento della divisione, cont:
…a questo punto "si abbassa" la cifra successiva
del dividendo, cioè 1, ottenendo 1101. Il divisore
1100 "sta" nel 1101, ovviamente una volta e con
resto 1…
10010110 : 1100
1100
----------------11
1101
1100
------1
Procedimento della divisione, cont:
…il quoziente diviene 11 e abbassando la cifra successiva 1 si ha
11. Questa volta il divisore "non sta" in questa parte del dividendo
e quindi si aggiunge uno 0 al quoziente…
10010110 : 1100
1100
----------------110
1101
1100
------11
Procedimento della divisione, cont:
…si prosegue abbassando la cifra successiva. Questo è l'ultimo 0,
che dà 110 nel dividendo. Di nuovo il 1100 non sta nel 110 e
perciò si aggiunge un altro 0 al quoziente.
10010110 : 1100
1100
----------------1100
1101
1100
------110
Non essendoci più cifre da calare ciò significa che l'operazione è
finita: quindi il quoziente è 11002=1210, il resto è 1102=610.
Rappresentazione dei numeri nel
calcolatore:

Nella rappresentazione dei numeri
attraverso il sistema binario sorgono due
problemi: rappresentazione dei numeri
troppo grandi o troppo piccoli.
 E' possibile rappresentare solo i numeri
compresi in un intervallo finito, compreso
tra la soglia minima di underflow e la
soglia massima di overflow
Rappresentazione dei numeri
periodici e dei numeri razionali.

E' possibile rappresentare solo una
parte, ovviamente la più significativa
incorrendo in un errore di troncamento
Rappresentazione dei numeri
con segno.
Se utilizziamo 16 bit per codificare un
numero avremo a disposizione 65536
combinazioni.
Possiamo:
– rappresentare i numeri naturali da 0 a 65535,
– rappresentare i numeri relativi (con segno) da 32768 a +32767.

Come facciamo?

Considerando 16 bit, il primo bit di questi,
detto bit più significativo (MSB Most
Significant Bit) a disposizione viene
utilizzato per il segno:
1 -> numero negativo;
0 -> numero positivo

Allora se il primo bit é 0, i rimanenti 15 bit
rappresentano un numero positivo da 0 a 32767

Se il primo bit é 1 i rimanenti 15 bit li possiamo
usare per rappresentare 32768 numeri negativi
Scarica

Rappresentazione dell`informazione nel calcolatore.