Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Rappresentazione informazione
Rappresentazione binaria
La pi` u piccola unit` a di informazione memorizzabile o elaborabile da un calcolatore, il bit, corrisponde allo stato di un dispositivo sico che viene interpretato come 1 o 0. In un calcolatore tutte le informazioni sono rappresentate in forma binaria, come sequenze di 0 e 1. Per motivi tecnologici: distinguere tra due valori di una grandezza sica ` e pi` u semplice che non ad esempio tra dieci valori.
INFORMATICA 242AA a.a. 2011/12 pag. 1
Rappresentazione informazione
Un numero naturale ` e un oggetto matematico, che pu` o essere rappresentato mediante una sequenza di simboli di un alfabeto ssato. ` importante distinguere tra numero e sua rappresentazione: il E numerale 234 ` e la rappresentazione del numero 234. Si distinguono 2 tipi di rappresentazione: additiva: ad es. le cifre romane posizionale: una cifra contribuisce con un valore diverso al numero a seconda della posizione in cui si trova Noi consideriamo solo la rappresentazione posizionale.
pag. 2
Rappresentazione informazione
Rappresentazione posizionale
c c c 1 c0 = Nb n 1 n 2
Il numero b di cifre diverse (dimensione dellalfabeto) ` e detto base del sistema di numerazione. Ad ogni cifra ` e associato un valore compreso tra 0 e b 1. Base 2 8 10 16
Alfabeto 0, 1 0, . . . , 7 0, . . . , 9 0, . . . , 9, A, . . . , F
pag. 3
Rappresentazione informazione
Il signicato di una sequenza di cifre (il numero N che essa rappresenta) dipende dalla base b :
n 1 i =0
c n 1 b n 1 + c n 2 b n 2 + + c 1 b 1 + c 0 b 0 =
ci b i
= N
Esempio: Il numerale 101 rappresenta numeri diversi a seconda del sistema usato: Sistema decimale binario ottale esadecimale Base b 10 2 8 16 101b (101)10 (101)2 (101)8 (101)16 Valore10 101 5 65 257
pag. 4
Rappresentazione informazione
Intervallo di rappresentazione
I numeri rappresentabili in base b con n posizioni (cifre) vanno da 0 a b n 1. 3 8 16 32 2 8 cifre cifre cifre cifre cifre cifre in in in in in in base base base base base base 10 : 2: 2: 2: 16 : 16 : da da da da da da 0 0 0 0 0 0 a a a a a a 999 255 65 535 4 294 967 296 255 4 294 967 296 = 103 1 = 28 1 = 216 1 = 232 1 = 162 1 = 168 1
pag. 5
Rappresentazione informazione
Usando direttamente c n 1 b n 1 + c n 2 b n 2 + + c 1 b 1 + c 0 b 0 =
n 1 i =0
ci b i
= N
esprimendo le cifre e b in base 10 (e facendo i conti in base 10) Esercizio (domani) Scrivere lalgoritmo di conversione da base b a base 10.
pag. 6
Rappresentazione informazione
R = c0
c0
Q = c1 + b ( )
A partire dal quoziente Q si pu` o iterare il procedimento per ottenere le cifre successive (no a che Q diventa 0).
INFORMATICA 242AA a.a. 2011/12 pag. 7 Rappresentazione informazione
N.B. Le cifre vengono determinate dalla meno signicativa alla pi` u signicativa.
Esempio: (25)10 = (???)2 = (11001)2 N:b 25 : 2 12 : 2 6:2 3:2 1:2 Q 12 6 3 1 0 R 1 0 0 1 1 cifra c0 c1 c2 c3 c4
Rappresentazione informazione
Dobbiamo rappresentare anche il segno: si usa uno dei bit (quello pi` u signicativo) Rappresentazione tramite modulo e segno
il bit pi` u signicativo rappresenta il segno le altre n 1 cifre rappresentano il valore assoluto problemi:
doppia rappresentazione per lo zero (00 00 e 10 00) le operazioni aritmetiche sono complicate (analisi per casi)
= invece della rappresentazione tramite modulo e segno si usa una rappresentazione in complemento alla base
pag. 9
Rappresentazione informazione
Con base b e n cifre, abbiamo a disposizione b n congurazioni distinte. Utilizziamo met` a delle congurazioni per rappresentare numeri positivi e laltra met` a per rappresentare numeri negativi. X se X 0 ||X || = b n |X | se X < 0 in questo modo si rappresentano gli interi relativi nellintervallo [b n /2, b n /2)
pag. 10
Rappresentazione informazione
b = 10 e n = 1 5 6 7 8 9 0 1 2 3 4
se b = 2 = rappresentazione in complemento a 2
rappresentazione degli interi relativi nellintervallo [2n1 , 2n1 ) positivi: la cifra pi` u signicativa ` e 0 (rappresentati nella parte inferiore dellintervallo) negativi: la cifra pi` u signicativa ` e 1 (rappresentati nella parte superiore dellintervallo)
INFORMATICA 242AA a.a. 2011/12 pag. 11 Rappresentazione informazione
Operazione di complementazione
Vogliamo determinare un algoritmo per determinare la rappresentazione in complemento alla base di X , data quella di X . Indipendentemente dal segno di X , abbiamo: ||X || + || X || = |X | + b n |X | = b n per cui || X || = b n ||X || o equivalentemente || X || = b n 1 ||X || + 1
pag. 12
Rappresentazione informazione
Operazione di complementazione
Supponiamo: ||X || =
n 1 i =0
ci b i
(b 1) b i
Otteniamo: || X || = b n 1 ||X || + 1 =(
n 1 i =0
(b 1) b i ) (
n 1 i =0
ci b i ) + 1
pag. 13
Rappresentazione informazione
Operazione di complementazione
Sia ora k la prima posizione signicativa di ||X ||, ovvero la prima cifra (a partire da destra) diversa da 0. Abbiamo allora: || X || = ( =(
n 1 i =0 n 1 i =0
(b 1) b ) ( (b 1) b ) (
i
n 1 i =0 n 1 i =k
ci b i ) + 1 ci b i ) + 1
=(
i =k +1
n 1
((b 1) ci ) b i ) + ((b 1) ck ) b k +
k 1 i =0
(b 1) b i ) + 1
k 1 i =0
(b 1) b i ) + 1 = b k .
INFORMATICA 242AA a.a. 2011/12 pag. 14
Rappresentazione informazione
Operazione di complementazione
Sia ora k la prima posizione signicativa di ||X ||, ovvero la prima cifra (a partire da destra) diversa da 0. Abbiamo allora: || X || = ( =(
n 1 i =0 n 1 i =0
(b 1) b ) ( (b 1) b ) (
i
n 1 i =0 n 1 i =k
ci b i ) + 1 ci b i ) + 1
=(
i =k +1
n 1
((b 1) ci ) b i ) + ((b 1) ck ) b k + b k
pag. 15
Rappresentazione informazione
Operazione di complementazione
n 1 n 1
|| X || = ( =(
i =k +1
i =k +1
Lultimo addendo ` e 0, poich` e ci = 0, per ogni i = 0, . . . , k 1. Come possiamo leggere quanto ottenuto? La rappresentazione di X si ottiene da quella di X :
1. ricopiando gli zeri meno signicativi 2. complementando alla base la prima cifra signicativa 3. complementando alla base meno uno le rimanenti cifre
pag. 16
Rappresentazione informazione
Operazione di complementazione
n 1 n 1
|| X || = ( =(
i =k +1
i =k +1
ci b i )
Lultimo addendo ` e 0, poich` e ci = 0, per ogni i = 0, . . . , k 1. Come possiamo leggere quanto ottenuto? La rappresentazione di X si ottiene da quella di X :
1. ricopiando gli zeri meno signicativi 2. complementando alla base la prima cifra signicativa 3. complementando alla base meno uno le rimanenti cifre
pag. 17
Rappresentazione informazione
Operazione di complementazione
Esempio: b = 3, n = 4, ||X || = 0210 (dunque X = (21)10 ) || X || = 2020 Verichiamo:
2020 = (60)10 34 60 = 81 60 = 21 = | X | si lasciano inalterate tutte le cifre no al primo 1 compreso si invertono le rimanenti cifre
pag. 18
Rappresentazione informazione
Complemento a 2
Esempio:
di quante cifre minimo abbiamo bisogno per rappresentare 298 ? 2101 298 < 2101 : 10 cifre 298 = 256 + 32 + 8 + 2, ||298|| in base 2 = 100101010 ||298|| in complemento a 2 con 10 cifre= 0100101010 || 298|| in complemento a 2 con 10 cifre = 1011010110 ||298|| in complemento a 2 con 11 cifre= 00100101010 || 298|| in complemento a 2 con 11 cifre= 11011010110
pag. 19
Rappresentazione informazione
si eettua bit a bit non ` e necessario preoccuparsi dei segni il risultato sar` a corretto (in complemento a 2 se negativo) pu` o vericarsi trabocco (overow) = il risultato non ` e corretto Si verica quando il numero di bit a disposizione non ` e suciente per rappresentare il risultato.
pag. 20
Rappresentazione informazione
In questi casi non si ha trabocco. rip. 01000 +9 01001 +8 01000 -15 10001 (e non +17) 10000 -9 10111 -8 11000 +15 01111 (e non 17)
Dierenza tra due numeri: si somma al primo il complemento del secondo Esempio: rip. +9 -9 0 n = 5, intervallo di rappresentazione: da 16 a 15 11111 01001 10111 00000 +9 -3 +6 11001 01001 11101 00110
pag. 22
Rappresentazione informazione
Numeri frazionari
Il peso delle cifre dipende, al solito, dalla loro posizione e dalla base prescelta Nb = c1 b Esempio:
1
+ c 2 b
+ + cn b
i = n
ci b i
pag. 23
Rappresentazione informazione
Numeri frazionari
Nb =
i = n 1
ci b i
()
Nel caso di un numero frazionario in binario, possiamo usare la () per convertirlo in base 10 Esempio: 0.10112 Convertiamo in base 10 il numero frazionario binario
0.10112 = 1 21 + 1 23 + 1 24 = 0.687510
La rappresentazione dei numeri frazionari pu` o introdurre approssimazioni dovute alla limitatezza delle cifre dopo la virgola. Lapprossimazione ` e comunque inferiore a b n dove n ` e il numero di cifre utilizzate.
INFORMATICA 242AA a.a. 2011/12 pag. 24
Rappresentazione informazione
Il metodo pi` u semplice consiste nelleettuare una sequenza di moltiplicazioni per 2 prendendo ad ogni passo la parte intera del risultato come cifra binaria della rappresentazione Esempio: Convertiamo 0.125 in base 2 0.125 2 = 0.25 0.25 2 = 0.5 0.5 2 = 1.0 In questo caso abbiamo una rappresentazione (0.125 = 1/8) 0.12510 = 0.0012 0 0 1 esatta su 3 cifre
pag. 25
Rappresentazione informazione
Esempio:
0.587 2 = 1.174 1 0.174 2 = 0.348 0 0.348 2 = 0.696 0 0.696 2 = 1.392 1 0.392 2 = 0.784 0 0.784 2 = 1.568 1 0.568 2 = ... Quindi la rappresentazione di 0.58710 in base 2 ` e:
0.10012 con 4 cifre (approssimazione accurata entro 24 ) 0.1001012 con 6 cifre (approssimazione accurata entro 26 )
pag. 26
Rappresentazione informazione
Laritmetica reale
Linsieme dei reali (e dei razionali) ` e innito = non ` e possibile rapprentarlo tutto Rappresentazione in virgola ssa Si rappresentano separatamente, usando un numero ssato di cifre parte intera e, parte frazionaria (si usa una virgola per separare le due parti) Nb = c n 1 c n 2 c 1 c 0 , c 1 c 2 c m rappresenta il numero N = c n 1 b n 1 + + c 0 b 0 + c 1 b 1 + + c m b m
pag. 27
Rappresentazione informazione
Laritmetica reale
Rappresentazione in virgola mobile (oating point) Utilizza la notazione esponenziale. Si esprime il numero come prodotto di due parti X = m be Esempio: ma anche 1150 = 1.15 103 1150 = 0.115 104
Dott. R. Gori, Dott. A. Rama INFORMATICA 242AA a.a. 2011/12 pag. 28
k bit per la parte intera = (2k , 2k ) m bit per la parte frazionaria = precisione 2m
Rappresentazione informazione
e` e la caratteristica in base b di X : intero relativo m` e la mantissa in base b di X : numero frazionario tale che 1/b |m| < 1 Esempio: 1150 = 0.115 mantissa 104 caratteristica
pag. 29
Rappresentazione informazione
Esempio:
pag. 30
Rappresentazione informazione
Fissati:
| e | 2h 1 1
Questo ssa anche massimo e minimo (in valore assoluto) numero rappresentabile. Assunzione realistica: reali rappresentati con 32 bit:
24 bit per la mantissa 7 bit per la caratteristica (in complemento) 1 bit per il segno della mantissa (0 positivo, 1 negativo)
INFORMATICA 242AA a.a. 2011/12 pag. 31
Rappresentazione informazione
molti razionali non appartengono ad F (ed es. 1/3, 1/5, . . . ) non ` e chiuso rispetto ad addizioni e moltiplicazioni per rappresentare un reale X si sceglie lelemento di F pi` u vicino ad X la funzione che associa ad un reale X lelemento di F pi` u vicino ad X ` e detta funzione di arrotondamento
INFORMATICA 242AA a.a. 2011/12 pag. 32
Rappresentazione informazione
Limitazioni aritmetiche
Dovute al fatto che il numero di bit usati per rappresentare un numero ` e limitato
perdita di precisione arrotondamento: mantissa non suciente a rappresentare tutte le cifre signicative del numero errore di overow: caratteristica non suciente (numero troppo grande) errore di underow: numero troppo piccolo viene rappresentato come 0
quadrupla precisione:
Larchitettura ` e ancora quella classica sviluppata da Von Neumann nel 1947. Larchitettura di Von Neumann riette le funzionalit` a richieste da un elaboratore:
memorizzare i dati e i programmi = memoria principale i dati devono essere elaborati = unit` a di elaborazione (CPU) comunicazione con lesterno = unit` a di ingresso/uscita (periferiche) le componenti del sistema devono scambiarsi informazioni = bus di sistema
pag. 34
Sistemi di elaborazione
` periferiche Unita
CPU
Memoria Principale
Memoria Secondaria
` Unita di Ingresso
` Unita di Uscita
Bus
` e una sequenza di celle di memoria (dette parole), tutte della stessa dimensione ogni cella ` e costituita da una sequenza di bit il numero h di bit di una cella di memoria (dimensione) dipende dallelaboratore, ed ` e un multiplo di 8: 8, 16, 32, 64 ogni cella di memoria ` e identicata in modo univoco dal suo indirizzo il numero k di bit necessari per lindirizzo dipende dal numero di celle di memoria k bit = 2k celle
INFORMATICA 242AA a.a. 2011/12 pag. 36
Sistemi di elaborazione
Memoria centrale
h bit
0 1 2 bus indirizzi CPU
k bit
972
. . . . . .
972
11001010
2k 1
bus dati
h bit
11001010
Operazione di lettura: 1. CPU scrive lindirizzo della cella di memoria da cui leggere nel registro indirizzi (RI) 2. esegue loperazione (apre i circuiti) 3. il valore della cella indirizzata viene trasferito nel registro dati (RD) Operazione di scrittura: al contrario
Dott. R. Gori, Dott. A. Rama Sistemi di elaborazione INFORMATICA 242AA a.a. 2011/12 pag. 37
Memoria centrale
Caratteristiche principali
` e una memoria ad accesso casuale, ossia il tempo di accesso ad una cella di memoria ` e indipendente dalla posizione della cella = viene chiamata RAM (random access memory) pu` o essere sia letta che scritta scrittura distruttiva lettura non distruttiva alta velocit` a di accesso ` e volatile (si perde il contenuto quando si spegne il calcolatore)
Dimensione della memoria: misurata in byte (1 byte=8 bit) Kilobyte Megabyte Gigabyte Terabyte
Dott. R. Gori, Dott. A. Rama
= = = =
Sistemi di elaborazione
Memoria secondaria
non volatile capacit` a maggiore della memoria centrale (decine di GB) tempo di accesso lento rispetto alla memoria centrale accesso sequenziale e non casuale tipi di memoria secondaria: dischi rigidi, oppy, CDROM, CDRW, DVD, nastri, . . .
bus indirizzi: k bit bus dati: h bit bus comandi: trasferisce i comandi tra le varie unit` a = parallelismo (attualmente si arriva a 128 bit)
pag. 39
coordina le attivit` a di tutte le componenti del calcolatore interpreta ed esegue le istruzioni del programma 3 componenti principali: unit` a logico-aritmetica (ALU): eettua i calcoli unit` a di controllo: coordinamento di tutte le operazioni registri: celle di memoria ad accesso molto veloce
registro istruzione corrente (IR): contiene listruzione in corso di esecuzione contatore di programma (PC): contiene lindirizzo della prossima istruzione da eseguire accumulatori: utilizzati dalla ALU per gli operandi ed il risultato registro dei ag: memorizza alcune informazioni sul risultato dellultima operazione (carry, zero, segno, overow, . . . ) registro interruzioni: utilizzato per la comunicazione con le periferiche registro indirizzi (RI) e registro dati (RD) per il trasferimento da e verso la memoria centrale
INFORMATICA 242AA a.a. 2011/12 pag. 40
Sistemi di elaborazione
CPU
Ciclo dellunit` a di controllo
Tutte le attivit` a interne alla CPU sono regolate da un orologio (clock) che genera impulsi regolari ad una certa frequenza (ad es. 800 MHz, 1 GHz, 2 GHz, . . . ). Il programma ` e memorizzato in celle di memoria consecutive, sulle quali lunit` a di controllo lavora eseguendo il ciclo di prelievo decodica esecuzione
while macchina in funzione do preleva dalla memoria listruzione indirizzata da PC e caricala in IR (aggiorna PC in modo che indirizzi la prossima istruzione) decodifica listruzione in IR esegui listruzione endwhile
pag. 41
pag. 42
Sistemi di elaborazione
Istruzioni
Ogni istruzione ` e costituita da: 01001001 codice operativo Tipi di istruzione
00110011 operandi
istruzioni di trasferimento dati da e verso la memoria centrale ingresso/uscita istruzioni logico/aritmetiche istruzioni di controllo istruzioni di salto
Le istruzioni dettano il usso del programma. Vengono eseguite in sequenza, a meno che non vi sia unistruzione di controllo che altera il normale usso (istruzione di salto).
pag. 43
un programma ` e una sequenza di 0 e 1 (suddivisi in parole) che codicano le istruzioni dipende dal calcolatore dipende dal calcolatore e le sue istruzioni sono in corrispondenza 1-1 con le istruzioni in linguaggio macchina istruzioni espresse in forma simbolica = comprensibile da un umano si basano su costrutti non elementari, comprensibili da un umano istruzioni pi` u complesse di quelle eseguibili da un calcolatore (corrispondono a molte istruzioni in linguaggio macchina) in larga misura indipendenti dallo specico elaboratore
INFORMATICA 242AA a.a. 2011/12 pag. 44
Sistemi di elaborazione
Per arrivare dalla formulazione di un problema allesecuzione del codice che lo risolve, bisogna passare attraverso diversi stadi: problema (specica) algoritmo (pseudo-codice) codice sorgente (linguaggio ad alto livello) compilazione [compilatore] codice oggetto (simile al codice macchina, ma con riferimenti simbolici) collegamento tra le diverse parti [collegatore (linker)] codice macchina (eseguibile) caricamento [caricatore (loader)] codice in memoria eseguito
pag. 45
Esempio: dati due interi positivi X ed Y, eseguire il loro prodotto usando solo le operazioni di somma e sottrazione Input(X); Input(Y); somma = 0; contatore = 0; while (contatore < Y) { somma = somma + X; contatore = contatore + 1; } Output(somma);
pag. 46
Sistemi di elaborazione
Codica dellalgoritmo in C
#include <stdio.h> void main (void) { int x, y; int cont = 0; int somma = 0; printf("Introduci due interi da moltiplicare\n"); scanf("%d%d", &x, &y); while (cont < y) { somma = somma + x; cont = cont + 1; } printf("La somma di %d e %d e pari a %d\n", x, y, somma); }
pag. 47
Linguaggio assembler
Vediamo per comodit` a un esempio di linguaggio assembler: (corrisponde 1-1 al codice in linguaggio macchina, ma ` e pi` u leggibile).
Caricamento dati LOAD R1 X LOAD R2 X LOAD R1 #C Carica nel registro R1 (o R2) il dato memorizzato nella cella di memoria identicata dal nome simbolico X Carica nel registro R1 la costante numerica C
Somma e Sottrazione SUM R1 R2 SUB R1 R2 Somma (sottrae) il contenuto di R2 al contenuto di R1 e memorizza il risultato in R1
Memorizzazione STORE R1 X STORE R2 X Memorizza il contenuto di R1 (R2) nella cella con nome simbolico X
pag. 48
Sistemi di elaborazione
Linguaggio assembler
Controllo JUMP A JUMPZ A STOP La prossima istruzione da eseguire ` e quella con etichetta A Se il contenuto di R1 ` e uguale a 0, la prossima istruzione da eseguire ` e quella con etichetta A Ferma lesecuzione del programma
Lettura/Scrittura READ X WRITE X Legge un dato e lo memorizza nella cella di nome simbolico X Scrive il valore contenuto nella cella di nome simbolico X
pag. 49
Istruzione C scanf scanf cont = 0 somma = 0 while (cont < y ) (se cont=y, vai a FINE) somma = somma + x
Signicato Leggi valore e mettilo nella cella X Leggi valore e mettilo nella cella Y Inizializzazione di cont ; metti 0 in R 1 Metti il valore di R 1 in CONT Inizializzazione di SOMMA; metti 0 in R 1 Metti il valore di R 1 in SOMMA Esecuzione del test: Metti in R 1 (R 2) il valore di CONT (Y ) Sottrai R 2 (ossia Y ) da R 1 Se R 1 = 0 (quindi CONT=Y) vai a FINE Metti in R 1 il valore di SOMMA Metti in R 2 il valore di X Metti in R 1 la somma tra R 1 ed R 2 Metti il valore di R 1 in SOMMA Incremento contatore; metti 1 in R 1 Metti in R 2 il valore di CONT Metti in R 1 la somma tra R 1 ed R 2 Metti il valore di R 1 in CONT Salta a INIZ Scrive il contenuto di SOMMA Fine dellesecuzione
INFORMATICA 242AA a.a. 2011/12 pag. 50
INIZ
cont = cont + 1
FINE
printf
Sistemi di elaborazione
ad una istruzione C corrispondono in genere pi` u istruzioni assembler (e quindi linguaggio macchina) Esempio: somma = somma + x = 1. carica il valore di X in un registro 2. carica il valore di SOMMA in un altro registro 3. eettua la somma tra i due registri 4. memorizza il risultato nella locazione di memoria di SOMMA JUMP e JUMPZ interrompono la sequenzialit` a delle istruzioni In realt` a il compilatore (ed il linker) genera linguaggio macchina
ogni istruzione ` e codicata come una sequenza di bit ogni istruzione occupa una (o pi` u celle di memoria) istruzione costituita da 2 parti: codice operativo operandi
pag. 51
Codice operativo 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1011 1100
INFORMATICA 242AA a.a. 2011/12 pag. 52
Sistemi di elaborazione
Indirizzo 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 10100 10101 10110 10111 11000
Codice operativo 1000 1000 1100 0010 1100 0010 0000 0001 0101 0111 0000 0001 0100 0010 1100 0001 0100 0010 0110 1001 1011
Indirizzo operando 10101 10110 00000 11000 00000 10111 11000 10110 ----10011 10111 10101 ----10111 00001 11000 ----11000 00110 10111 -----
Istr. assembler READ X READ Y LOAD R1 #0 STORE R1 CONT LOAD R1 #0 STORE R1 SOMMA LOAD R1 CONT LOAD R2 Y SUB R1 R2 JUMPZ FINE LOAD R1 SOMMA LOAD R2 X SUM R1 R2 STORE R1 SOMMA LOAD R1 #1 LOAD R2 CONT SUM R1 R2 STORE R1 CONT JUMP INIZ WRITE SOMMA STOP X Y SOMMA CONT
pag. 53