8 per pagina

Transcript

8 per pagina
Rappresentazione
dell’informazione
Argomenti trattati:
• numeri: naturali, interi, reali e le operazioni
I calcolatori gestiscono dati di varia natura:
testi, immagini, suoni, filmati,
aritmetiche nell’hardware,
• caratteri: diversi codici di rappresentazione,
• codici di correzione degli errori,
• organizzazione della memoria,
nei calcolatori rappresentati con sequenze di bit:
mediante un’opportuna codifica
presentiamo le codifiche dei dati gestite
dall’hardware: numeri (e caratteri).
(Architettura degli Elaboratori)
Numeri binari
1 / 28
(Architettura degli Elaboratori)
Codifica: Teoria generale
Numeri binari
2 / 28
Proprietà di una codifica:
• insieme dei dati rappresentabili (D),
• alfabeto (A = {0, 1}): insieme di simboli,
• compatta: si limita in numero di byte necessari,
• codifica (D → A∗ ): mappa tra dati e le
• pratica: facilitare la computazione,
sequenze di bit
• fedele: codifiche senza perdita di informazione,
o con poca informazione persa.
In una codifica di lunghezza costante, con n bit si
rappresentano sino a 2n dati diversi.
Esigenze contrapposte: si cerca un compromesso.
Esistono codifiche a lunghezza variabile (dati diversi
occupano un diverso numero di bit).
(Architettura degli Elaboratori)
Numeri binari
3 / 28
(Architettura degli Elaboratori)
L’aritmetica dei calcolatori
Binary
• come eseguire le operazioni
1's
place
d2
d1
d0
.1's
place
.01's
place
.001's
place
d–1
d–2
d–3
Octal
…
.
…
Σ
Hexadecimal
di × 10i
Numeri binari
5 / 28
Notazione binaria
Numeri binari
1
0
1
0
0
0
3
7
2
1
2
0
0
1
7
D
.
1
(Architettura degli Elaboratori)
Numeri binari
6 / 28
Conversioni di base: da 2
a 10
Il calcolatore utilizza base 2
• un segnale digitale rappresenta una cifra
• semplificazione dell’hardware
Alternativa: BCD (Binary Coded Decimal)
• si rappresenta una sequenza di cifre decimali,
• ogni cifra rappresentata da 4 bit,
• vantaggi nessun arrotondamento per numeri
con virgola,
• svantaggi complica i circuiti per le operazioni,
usa più bit dello stretto necessario.
(Architettura degli Elaboratori)
1
7 × 162 + 13 × 161 + 1 × 160
1792 + 208
+1
i = –k
(Architettura degli Elaboratori)
1
2 × 103 + 0 × 102 + 0 × 101 + 1 × 100
2000 + 0
+0
+1
d–k
n
Number =
1
3 × 83 + 7 × 82 + 2 × 81 + 1 × 80
1536 + 448 + 16 + 1
Decimal
dn
1
1 × 210 + 1 × 29 + 1 × 28 + 1 × 27 + 1 × 26 + 0 × 25 + 1 × 24 + 0 × 23 + 0 × 22 + 0 × 21 +
+0
+ 16
+0
+0
+0
+
1024 + 512 + 256 + 128 + 64
Notazione posizionale: il peso di una cifra dipende
dalla sua posizione:
10's
place
4 / 28
La stessa idea con basi
diverse
• come codificare i numeri: naturali, interi, reali.
100's
place
Numeri binari
Due possibili metodi (algoritmi).
1) Sommare il peso delle singole cifre.
101110110111two =
211 + 29 + 28 + 27 + 25 + 24 + 22 + 21 + 20
= 2048+512+256+128+32+16+4+2+1 = 2999ten
Intuitivo ma poco efficiente.
7 / 28
(Architettura degli Elaboratori)
Numeri binari
8 / 28
Ambiguità
“Esistono 10 tipi di persone: quelle che capiscono la
notazione binaria e quelli che non la capiscono.”
Se si usano diverse basi, bisogna specificare la
base utilizzata.
Diverse modi, ma in genere:
un pedice alla fine della sequenza di cifre.
Esempi: 257ten , (257)10 , 257eight , 257H.
Alternative: lettere all’inizio della sequenza di cifre:
H328C, HABCD, 0xABCD, O127
(Architettura degli Elaboratori)
1
0
1
1
Numeri binari
9 / 28
Secondo metodo di
conversione
Si convertono le sottosequenze iniziali della
sequenza.
Per convertire 101110110111two :
1two = 1ten
10two = 2ten
101two = 5ten = 2 ∗ 2 + 1
1011two = 11ten = 5 ∗ 2 + 1
Ad ogni passo:
“nuovo valore” =
“valore precedente” ∗ 2 + “nuova cifra”
(Architettura degli Elaboratori)
2o metodo di conversione:
esempio
1
0
1
1
0
1
1
Result
Due possibili metodi (algoritmi):
1 + 2 × 749 = 1499
1 + 2 × 374 = 749
1) Scomporre in potenze di 2
0 + 2 × 187 = 374
1 + 2 × 93 = 187
1492 = 1024 + 468 = 1024 + (256 + 212)
= 1024 + (256 + (128 + 84) . . .
= 1024 + 256 + 128 + 64 + 16 + 4
= 210 + 28 + 27 + 26 + 24 + 22
1 + 2 × 46 = 93
0 + 2 × 23 = 46
1 + 2 × 11 = 23
1 + 2 × 5 = 11
1+2×2=5
Metodo intuitivo ma poco pratico.
0+2×1=2
1+2×0=1
Start here
Metodo applicabile per convertire da una qualsiasi
(Architettura degli Elaboratori)
Numeri binari
base in base 10.
11 / 28
Altro metodo: serie di
divisioni - resti
Remainders
13 / 28
746
0
373
0
186
1
93
0
46
1
23
0
11
1
5
1
2
1
1
0
0
1
1 0 1 1 1 0 1 0 1 0 0 = 149210
(Architettura degli Elaboratori)
Numeri binari
14 / 28
Conversioni
Da base 2 a base 16 (8)
• dividere la sequenza di cifre in gruppi di 4 (3),
• trasformare ciascun gruppo in una cifra.
A volte necessario rappresentare numeri binari di
decine di cifre.
Rappresentazioni ottale e esadecimale sono
comode:
• un insieme di cifre simile a quello della
notazione decimale;
• più compatte della notazione binaria;
• esiste un metodo semplice e veloce per
convertire di base.
La notazione esadecimale richiede cifre extra:
A (10), B (11), C (12), D (13), E (14), F (15).
Numeri binari
12 / 28
Serie di divisioni - resti:
esempio
Base 8 (ottale) o 16
(esadecimale)
(Architettura degli Elaboratori)
Numeri binari
1492
Metodo applicabile per convertire da base dieci ad
una qualsiasi base (serie di divisione per la “base”).
Numeri binari
(Architettura degli Elaboratori)
Quotients
Dividendo un numero (decimale) per 2 ottengo:
• l’ultima cifra binaria,
• il numero rappresentato dalle rimanenti cifre.
Con un serie di divisioni per 2 valuto tutte le cifre.
(Architettura degli Elaboratori)
10 / 28
Conversione da base 10 a
base 2
1
1 + 2 × 1499 = 2999
Numeri binari
Da base 16 (8) a base 2
• trasformare ciascuna cifra in sequenza di 4 (3)
cifre binarie,
• riunire le sequenze cosı̀ ottenute.
15 / 28
(Architettura degli Elaboratori)
Numeri binari
16 / 28
Esempi
L’aritmetica del calcolatore
Tre diverse classi di numeri: naturali (unsigned),
interi (signed), reali (floating point).
Rappresentati con un numero fisso di cifre.
• Naturali e interi: 16 – 32 – 64 bit.
• Reali (frazionari): 32 – 64 – 128.
Example 1
1
Hexadecimal
9
8
4
.
.
.
B
6
0001100101001000 101101100
Binary
1
Octal
4
5
1
0
5
5
4
Example 2
Hexadecimal
7
Binary
B
A
3
.
.
.
C
B
4
0111101110100011 101111000100
7
Octal
(Architettura degli Elaboratori)
5
6
4
3
5
7
0
4
Numeri binari
17 / 28
Errore di overflow
Operazioni aritmetiche
nell’hardware
Errore di overflow: il risultato di un operazione è più
grande del massimo valore rappresentabile.
Esempio: la somma o il prodotto di due numeri di cui
uno uguale al massimo numero rappresentabile.
L’hardware segnala eventuali gli errori di overflow,
Esempio: nella somma di due numeri naturali,
l’hardware controlla se le cifre più significative
generano un riporto.
(Architettura degli Elaboratori)
Numeri binari
19 / 28
Operazioni aritmetiche
(Architettura degli Elaboratori)
21 / 28
Numeri binari
20 / 28
Divisione:
• serie di sottrazioni;
• in hardware: serie di sottrazione o, per i numeri
floating-point, calcolo dell’inverso e prodotto.
(Architettura degli Elaboratori)
Interi
Due principali rappresentazioni:
• segno e valore assoluto
9dieci = 0 0001001
−9dieci = 1 0001001
• complemento a 2
9dieci = 0 0001001
−9dieci = 1 1110111
Complemento a 2: i numeri positivi rappresentati
come in binario puro, l’opposto si ottiene invertendo
le cifre e sommando 1.
La rappresentazione maggiormente usata perché
semplifica l’hardware, l’ALU (Arithmetic Logic Unit).
(Architettura degli Elaboratori)
Numeri binari
Operazioni aritmetiche
Moltiplicazione:
• serie di somme;
• in hardware: stessa idea ma parallelizzata, più
somme contemporaneamente, meno cicli di
somme (Dadda and Wallace multipliers).
Numeri binari
L’hardware implementa le 4 operazioni aritmetiche.
Gli algoritmi (metodi) validi per base dieci restano
validi per base due.
Per motivi di efficienza, l’hardware usa algoritmi più
sofisticati.
Addizione:
• somme e riporti;
• in hardware: bisogna gestire il problema della
propagazione del riporto.
Sottrazione:
• sottrazioni e prestiti;
• in hardware: si calcola l’opposto e esegue un
addizione,
soluzione utile perché viene usata la notazione
complemento a due per i negativi.
(Architettura degli Elaboratori)
Conseguenze.
• L’insieme dei numeri rappresentabili è limitato.
Massimo rappresentabile.
• Per i numeri reali, il calcolatore da risultati
approssimati. (le rappresentazioni sono
approssimate, le operazioni introducono errori).
• Più formati per numeri e operazioni.
(Architettura degli Elaboratori)
Numeri binari
18 / 28
23 / 28
Numeri binari
22 / 28
Numeri frazionari (con
virgola)
I pesi delle cifre dopo la virgole sono potenze
negative di due.
1, 011 = 1∗20 +0∗2−1 +1∗2−2 +1∗2−3 = 1+1/4+1/8
Solo i numeri nella forma z/2n sono rappresentabili
con un numero finito di cifre;
esempio : 0, 4 scritto in base due diventa un numero
periodico.
(Architettura degli Elaboratori)
Numeri binari
24 / 28
Notazione floating-point
Floating-point nel
calcolatore
Per i numeri frazionari si usa la notazione
floating-point (scientifica) (esponente– mantissa).
Il numero X è rappresentato da una coppia (m, e)
Un numero reale X viene rappresentato da una
sequenza di bit spezzata in due parti:
• una parte per la mantissa m,
notazione normalizzata, la virgola in posizione
fissa (es. dopo la prima cifra) non viene
rappresentata,
• una parte per l’esponente e (numero intero)
• X = m × 10e
• m: mantissa, numero frazionario,
(1 ≤ |m| < 10),
• e: esponente, numero intero
Vantaggi: si rappresentano numeri grandi (e piccoli)
sinteticamente, evitando gli zeri non significativi.
(Architettura degli Elaboratori)
Numeri binari
25 / 28
X = m × 2e
L’esponente indica di quante posizioni deve essere
spostata
la virgola nellaNumeri
mantissa.
(Architettura degli Elaboratori)
binari
26 / 28
Floating-point nel
calcolatore
Notazione IEEE standard
Un numero fisso di bit per m ed e.
Un numero finito di valori rappresentabili.
A secondo di come partiziono le cifre:
• più bit per e ⇒ più ampio l’intervallo
• più bit per m ⇒ maggiore precisione (numeri più
densi)
3
Negative
underflow
1
Negative
overflow
—10100
2
Expressible
negative numbers
(Architettura degli Elaboratori)
5
Positive
underflow
4
Zero
—10—100 0
Numeri binari
notazioni diverse, problemi nello scambio dati.
• Produttori informatici affidano a Williams Kahan
•
•
•
6
Expressible
positive numbers
10—100
• Fino agli anni 80: processori diversi usavano
7
Positive
overflow
10100
27 / 28
•
la definizione di uno standard,
notazione IEEE 754 standard.
gestazione molto lunga,
Usata in tutti i calcolatori,
Turing award.
(Architettura degli Elaboratori)
Numeri binari
28 / 28