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

Post on 03-May-2015

216 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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/

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

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.

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.

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

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:

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.

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

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.

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

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?

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

top related