rappresentazione dell’informazione nel calcolatore. alessandro bozzola materiale tratto da:

31
Rappresentazione Rappresentazione dell’informazione nel dell’informazione nel calcolatore. calcolatore. Alessandro Bozzola MATERIALE TRATTO DA: http:// webcen . usr . dsi . unimi . it / infogenerale / http://www. lta .disco. unimib . it

Upload: elmo-verde

Post on 03-May-2015

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Rappresentazione Rappresentazione dell’informazione nel calcolatore.dell’informazione nel calcolatore.

Alessandro Bozzola

MATERIALE TRATTO DA:

http://webcen.usr.dsi.unimi.it/infogenerale/http://www.lta.disco.unimib.it/didattica/InfoGen/

Page 2: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

IntroduzioneIntroduzione

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).

Page 3: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Introduzione (cont…)Introduzione (cont…)

Vedremo quindi come si rappresentano le informazioni fondamentali: numeri e caratteri.

Daremo dei cenni sulla rappresentazione di informazioni più sofisticate e complesse.

Page 4: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

La rappresentazione dei numeriLa 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.

Page 5: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Notazioni posizionaliNotazioni 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:

...33

22

11

00 BdBdBdBd

Page 6: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Notazione posizionale decimaleNotazione 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:

Page 7: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

E' possibile scegliere il numero di cifre differenti che si usano in una notazioneposizionale, e tale numero prende il nomedi base; in ogni numero decimale (in base dieci) la cifra all'estrema destra ha il valoreminore (cifra meno significativa) , quellaall'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.

Page 8: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Altre basiAltre basi Ogni numero è esprimibile in modo univoco in una

qualunque base:Stringa Base Calcolo del valore Valore in base 10

13 4 4 * 1 + 3 713 8 8 * 1 + 3 1113 10 10 * 1 + 3 1313 16 16 * 1 + 3 19

– Basi di particolare interesse:base B=2 due sole cifre: 0 e 1base B=8 otto cifre: 0, 1, 2, 3, 4, 5, 6, 7base B=10 dieci cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9base B=16 sedici cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E,

F

Page 9: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Conversioni tra basi differenti:Conversioni tra basi differenti:

Algoritmo delle divisioni successiveDato 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.

Page 10: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Esempi, da base 10 a base 2:Esempi, da base 10 a base 2:

Convertiamo (11)10 in base 2. N resti11 1 5 1 2 0 0 1

1011 = 1*2^3+0*2^2+1*2^1+1*2^0 == 8 + 2 + 1 = 11

Page 11: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Esempio da base 10 a 16 e Esempio da base 10 a 16 e viceversa:viceversa:

• Conversione del numero 44 in base 16

44:16 = 2

2:16 = 0

Quindi 4410 corrisponde a 2C16.

con resto 12 dove 1210corrisponde a C16

con resto 2

Verifica: 2 * 16^1 + C * 16^0 = 32 + 12 = (44)10

Page 12: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Un altro esempio:Un altro esempio:

Convertiamo (49)10 in base 2.. N resti49 124 012 0 6 0 3 1 1 1 0

110001 = 1+16+32 = 49

Page 13: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Vediamone un altro:Vediamone un altro:

Convertiamo (57)10 in base 4. N resti57 114 2 3 3 0

321 = 3*4^2+2*4^1+1*4^0 == 3*16+2*4+1 = = 48 + 8 +1 = 57

Page 14: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Conversione tra ottale, Conversione tra ottale, esadecimale e binarioesadecimale 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.

Page 15: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Per esempio, il numero ottale 1238 si converte facilmente in

0010100112:

il numero esadecimale 3C16 si converte facilmente in 001111002

Page 16: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Tabella riassuntiva: conversione rapida binario-ottale, binario-esadecimale:

Page 17: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Conversioni per numeri frazionariConversioni 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.

Page 18: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Metodo delle moltiplicazioni Metodo delle moltiplicazioni successive:successive:

• Conversione del numero 0.65625 in base 2 0.65625*2 = 1.31250 con resto 1 0.31250*2 = 0.62500 con resto 0 0.62500*2 = 1.250 con resto 1 0.250*2 = 0.500 con resto 0 0.5*2 = 1.00 con resto 1

Il risultato è: 0.6562510 = 101012

Page 19: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Operazioni nel sistema di Operazioni nel sistema di numerazione binario: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 esserenecessari K+1 bit. Se sono disponibili solo K cifre si genera un errore di overflow (o trabocco).

Page 20: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Esempio di somma binaria:Esempio di somma binaria:

A = 110112 =2710

B = 001102 =610

1 1 0 1 12+

0 0 1 1 02 =

-------------- 1 0 0 0 0 12

Verifica: 2710 + 610 = 3310

1000012 = 1*2^5 + 1* 2^0 = 1* 32 + 1 * 1 = 3310

overflow

Page 21: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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

Page 22: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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

Page 23: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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 = ?

Page 24: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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

Page 25: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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 ----------- ------- 1 1 1101

1100 ------- 1

Page 26: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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 -----------

------- 1 1 0 1101

1100 ------- 11

Page 27: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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 -----------

------- 1 1 0 0 1101

1100 ------- 110

Non essendoci più cifre da calare ciò significa che l'operazione è finita: quindi il quoziente è 11002=1210, il resto è 1102=610.

Page 28: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Rappresentazione dei numeri nel Rappresentazione dei numeri nel calcolatore: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

Page 29: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Rappresentazione dei numeri Rappresentazione dei numeri periodici e dei numeri razionaliperiodici e dei numeri razionali. .

E' possibile rappresentare solo una parte, ovviamente la più significativa incorrendo in un errore di troncamento

Page 30: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

Rappresentazione dei numeri Rappresentazione dei numeri con segnocon 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?

Page 31: Rappresentazione dell’informazione nel calcolatore. Alessandro Bozzola MATERIALE TRATTO DA:

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