rappresentazione dell’informazione nel calcolatore. alessandro bozzola materiale tratto da:
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