Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Fondamenti di informatica, Appunti di Fondamenti di informatica

Dispensa universitaria di M. Marzolla sui fondamenti dell'informatica (2021). Copre rappresentazione dati, architettura hardware, algoritmi, programmazione, reti, crittografia e teoria della calcolabilità (Macchine di Turing). Include esercizi risolti per ogni capitolo.

Tipologia: Appunti

2024/2025

Caricato il 09/12/2025

riccardo-menegoni
riccardo-menegoni 🇮🇹

1 documento

1 / 155

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
MORENO MARZOLLA
FONDAMENTI DI
INFORMATICA
(BOZZA)
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Anteprima parziale del testo

Scarica Fondamenti di informatica e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

M O R E N O M A R Z O L L A

F O N D A M E N T I D I

I N F O R M A T I C A

( B O Z Z A )

Indice

Rappresentazione dell’Informazione

I moderni calcolatori elettronici possono manipolare informazioni rappresentabili esclusivamente da sequenze composte da due possi- bili valori (1 o 0, vero o falso, acceso o spento). Nonostante questa apparente limitazione, i calcolatori sono in grado di memorizzare ed elaborare qualsiasi tipo di informazione numerica, testuale, visiva e sonora. In questo capitolo vediamo come sia possibile rappresentare informazioni di qualsiasi tipo usando sequenze di valori binari.

1.1 La logica binaria

Figura 1.1: George Boole (2 no- vembre 1815 - 8 dicembre 1864), matematico e filosofo, ha definito nel 1847 l’algebra booleana che `e alla base del funzionamento dei calcolato- ri elettronici. Immagine: Wikipedia: Public Domain.

Ogni calcolatore elettronico moderno rappresenta qualsiasi tipo di informazione mediante sequenze di valori binari, cioe di elementi che possono assumere solo due possibili valori. Le regole che vengono impiegate per manipolare tali valori sono quelle dell’algebra booleana, inventata nel 1847 dal matematico e filosofo britannico George Boole (Figura 1.1). Il successo dell’algebra di Boole deriva dal fatto che puo essere realizzata efficacemente mediante circuiti elettronici. Nell’algebra booleana esistono due possibili valori, vero e falso, che vengono generalmente rappresentati con i bit (Binary Digit, ossia cifra binaria) 0 (falso) e 1 (vero). L’algebra definisce alcune operazioni elementari tra bit: la congiunzione logica (and logico, indicato anche con il simbolo ∧); la disgiunzione logica (or logico, indicato anche con il simbolo ∨); la negazione (not logico, indicato anche con il simbolo ¬). Gli operatori and e or si applicano a coppie di bit e restituiscono un singolo bit come risultato; l’operatore not opera su un singolo bit, e restituisce un bit come risultato. Un modo semplice per descrivere il comportamento degli operatori logici e mediante l’uso di tabelle di verita. Una tabella di verit`a mostra il valore di una espressione logica per ogni possibile valore dei suoi parametri.

x y x and y 0 0 0 0 1 0 1 0 0 1 1 1

x y x or y 0 0 0 0 1 1 1 0 1 1 1 1

x not x 0 1 1 0

Figura 1.2: Tabelle di verit`a degli operatori booleani and, or e not

8 fondamenti di informatica (bozza)

Le tabelle di verita dei tre operatori booleani and, or e not sono mostrate in Figura 1.2. Il risultato dell’operazione x and y vale 1 (vero) se e solo se sia x che y valgono 1. L’espressione x or y vale 1 se e solo se almeno uno tra x e y vale 1. Infine, l’espressione not x vale 1 se e solo se x vale zero. Applicando la definizione degli operatori di base possiamo costrui- re la tabella di verita di qualsiasi espressione booleana che combi- na tali operatori in modo arbitrario. Se una espressione booleana ha n variabili, la sua tabella di verita sara composta da 2n^ righe che corrisponderanno a tutte le possibili combinazioni di valori delle variabili.

Esempio 1.1 Scrivere la tabella di verit`a dell’espressione (x and y) or (not y) Svolgimento. L’espressione ha due variabili, x e y, per cui la tabel- la deve avere 4 righe. E utile compilare la tabella di verit`` a in modo incrementale. Iniziamo elencando tutte le possibili combinazioni di valori per x e y.

x y (x and y) or (not y) 0 0 0 1 1 0 1 1

Riportiamo quindi i valori di x e y sotto le occorrenze di queste variabili nell’espressione da valutare:

x y (x and y) or (not y) 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 1 1 1 1

A questo punto, applichiamo le definizioni di and e not per va- lutare le sotto-espressioni (x and y) e (not y). Scriviamo il valore di tali espressioni sotto il corrispondente operatore booleano, come mostrato di seguito:

x y (x and y) or (not y) 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1

e sfruttando i valori delle sotto-espressioni appena calcolati, siamo in grado di valutare l’espressione completa (x and y) or (not y), riportandone il risultato sotto l’operatore or:

10 fondamenti di informatica (bozza)

e y = 0, oppure quando x = 1 e y = 1. Detto in altro modo:

x ≡ y = 1 ↔ (x = 0 and y = 0) or (x = 1 and y = 1) ↔ ((not x) = 1 and (not y) = 1) or (x = 1 and y = 1) ↔ ((not x) and (not y)) or (x and y)

da cui possiamo concludere che una espressione booleana che calcola x ≡ y `e ((not x) and (not y)) or (x and y). 

Sebbene il procedimento funzioni correttamente per qualsiasi tabella di verita, none garantito che l’espressione booleana che si ottiene sia la piu semplice possibile. Ad esempio, se applichiamo il procedimento alla tabella di verita dell’operatore or, otteniamo l’espressione

(not x and y) or (x and not y) or (x and y)

che e molto piu complessa di x or y. La semplificazione di espressioni logiche richiede tecniche sofisticate che esulano dallo scopo di questa dispensa. Gli operatori and, or e not sono sufficienti per definire qualsia- si espressione booleana, e quindi qualunque altro operatore logico; esistono tuttavia altri operatori che vengono usati frequentemente, e per tale ragione viene loro assegnato un nome specifico e vengono usati alla stregua degli operatori elementari. Un esempio `e l’or esclu- sivo (xor ). L’espressione x xor y vale 1 se e solo se esattamente uno tra x e y vale 1.

x y x xor y 0 0 0 0 1 1 1 0 1 La Tabella 1.1 mostra la tabella di verita dell’operatore xor. 1 1 0 E ovviamente possibile realizzare l’operatore xor usando i tre operatori primitivi. Applicando alla Tabella 1.1 la regola generale per derivare una espressione logica si ottiene:

x xor y = ((not x) and y) or (x and (not y))

Altri operatori logici frequentemente usati sono la versione “ne- gata” di and e or, chiamati rispettivamente nand e nor logico, e definiti come

x nand y = not(x and y) x nor y = not(x or y)

Gli operatori nand e nor godono della proprieta di essere univer- sali, nel senso che ogni altro operatore logico puo essere realizzato in termini di nand oppure nor ; questo tema verr`a approfondito negli esercizi 1.3 e 1.4.

Esercizi

Esercizio 1.1 L’implicazione logica x → y (“se x allora y”) e definita come (not x) or y. Scrivere la tabella di verita dell’operatore →.

rappresentazione dell’informazione 11

Esercizio 1.2 Mostrare come sia possibile realizzare l’operatore not utilizzando esclusivamente l’operatore xor. Suggerimento: puo essere utile far uso anche di costanti 0 e/o 1. Esercizio 1.3 Dimostrare che l’operatore nande universale, nel senso che e possibile esprimere gli operatori and, or e not utilizzan- do espressioni booleane che usano esclusivamente nand. Ad esempio, not x = (x nand x). Esercizio 1.4 Dimostrare che l’operatore nore universale, nel sen- so che e possibile esprimere gli operatori and, or e not utilizzando espressioni booleane che usano esclusivamente nor. Ad esempio, not x = (x nor x). Esercizio 1.5 Definire una espressione booleana M (x, y, z) (mag- gioranza) che accetta in input tre bit x, y e z, e ritorno il valo- re che compare nella maggioranza degli input. Ad esempio, se x = 0, y = 1, z = 0 la funzione deve restituire 0; se x = 1, y = 1, z = 1 la funzione deve restituire 1. Esercizio 1.6 Dimostrare le seguenti proprieta dell’operatore xor: (x xor y) xor z = x xor (y xor z) x xor x = 0 x xor 0 = x Esercizio 1.7 Dimostrare formalmente che la funzione fn(xn− 1 , xn− 2 ,... , x 0 ) = xn− 1 xor xn− 2 xor... xor x 0 vale 1 se e solo se la sequenza di bit xn− 1 xn− 2 · · · x 0 ha un numero dispari di cifre 1. Esercizio 1.8 Vero o falso? (a) Consideriamo l’espressione booleana R = x and (not x) and y. Allora esistono dei valori di x e y per i quali si abbia R = 1. (b) Consideriamo l’espressione booleana R = x or (not x). Allora esistono dei valori di x per i quali si abbia R = 1. (c) Consideriamo l’espressione booleana R = x and (not y). Allora se x e y hanno lo stesso valore, il risultato `e R = 0.

(d ) Consideriamo l’espressione booleana R = x and (not y) (la stessa del punto precedente). Allora per tutte le possibili combinazioni di valori di x e y risulta sempre R = 0 Esercizio 1.9 Si consideri l’espressione booleana R = (x and y and z) xor (x or y or z). Per ciascuna delle affermazioni seguenti, dire se e vera o falsa: (a) Se x = y = z = 1 allora il risultatoe 0 (b) Se x = y = z = 0 allora il risultato e 0 (c) Se uno solo tra x, y, ze 1, allora il risultato `e 1.

(d ) Se x = 1, allora il risultato `e sempre 1 a prescindere dai valori di y e z

rappresentazione dell’informazione 13

di numerazione posizionali non decimali. Gli antichi Maya utilizza- vano un sistema posizionale vigesimale (con base 20). Gli antichi Babilonesi utilizzavano invece un sistema posizionale sessagesimale (con base 60). Sebbene la base 60 richieda 60 cifre, i Babilonesi ne usavano 59 in quanto non disponevano di un simbolo specifico per lo zero, che veniva indicato con uno spazio vuoto per indicare l’assenza di una cifra. Solo successivamente adottarono un simbolo per lo zero, rappresentato da due chiodi obliqui. E interessante notare che la rappresentazione delle cifre Maya eBabilonesi sfruttano a loro volta un altro sistema di numerazione. Nel caso dei Maya le cifre sono composte da barre che hanno valo- re 5, e punti che hanno valore uno. La cifre 17 si rappresenta quindi come tre barre e due punti (3×5+2 = 17). Nel caso dei Babilonesi le cifre sfruttano un sistema pseudo-decimale: un cuneo rappresenta 10, mentre il chiodo verticale rappresenta l’unita. Pertanto, la cifra 38 si compone di 3 cunei e 8 chiodi (3 × 10 + 8 = 38). Alcuni sistemi di numerazione sessagesimali sono in uso anche oggi, ad esempio per la misura degli angoli (gli angoli di un triangolo equilatero misurano 60 gradi; l’angolo giro misura 360 gradi), e del tempo (un’ora si compone di 60 minuti, e un minuto di 60 secondi).

Figura 1.3: (A sinistra) le 20 cifre del sistema di numerazione posizionale in base 20 usato dagli antichi Maya (Immagine: Wikipedia; GFDL 1.2+). (A destra) le 59 cifre diverse da zero del sistema di numerazione posizio- nale in base 60 usato dagli antichi Babilonesi (Immagine: Wikipedia; GFDL 1.2+).

Esistono semplici regole per convertire un numero espresso in ba- se b nella corrispondente rappresentazione in base 10, e viceversa. Come per tutte le rappresentazioni posizionali, l’Eq. (1.2) consen- te di calcolare il valore di qualsiasi numero in base b moltiplicando ciascuna cifra per il corrispondente peso, che e una potenza di b. Se eseguita manualmente, questa procedura puo essere semplifi- cata scrivendo sopra a ciascuna cifra il peso corrispondente, come nell’esempio che segue.

Esempio 1.3 Convertire in decimale i seguenti valori: (a) 0110 1101 2 (b) 736 8 (c) D 8 F A 16 Svolgimento. Il primo valore e rappresentato in notazione binaria (base 2). Scriviamo quindi le cifre del numero indicando sopra a ciascuna il peso corrispondente, e sommiamo i pesi corrispondenti alle cifre 1: 128 64 32 16 8 4 2 1 Pesi 0 1 1 0 1 1 0 1 64 +32 +8 +4 +1 = 109 10 Il secondo valoree espresso in notazione ottale (base 8). Appli- chiamo lo stesso procedimento, con la differenza che i pesi delle cifre

14 fondamenti di informatica (bozza)

sono potenze di 8. Il valore decimale si ottiene sommando i prodotti delle cifre per i pesi corrispondenti:

64 8 1 Pesi 7 3 6 448 +24 +6 = 478 10 L’ultimo valore e espresso in notazione esadecimale (base 16). Ripetiamo il procedimento usando come pesi le potenze di 16, e ricordando che il valore delle cifre esadecimalie quello indicato nella Tabella 1.2 (A corrisponde a 10, F corrisponde a 15):

4096 256 16 1 Pesi D 8 F A 53 248 +2 048 +240 +10 = 55 546 10  Per la conversione in base b ≥ 2 di un intero v ≥ 0 si adotta il pro- cedimento della divisione ripetuta. Si divide ripetutamente v per b fino a quando il risultato della divisione intera e zero. La sequenza dei resti indica la rappresentazione in base b (il primo resto ottenuto indica la cifra meno significativa, cioe quella a destra). L’algoritmo 1 descrive in modo pi`u preciso il procedimento. Algorithm 1: Conversione di un Pre v ≥ 0, b ≥ 2 valore v in base b Post ck− 1 ck− 2... c 0 sono le cifre in base b che rappresentano v k ← 0 repeat ck ← resto della divisione intera v/b v ← quoziente della divisione intera v/b k ← k + 1 until v = 0

Esempio 1.4 Convertire 3 853 10 in binario, ottale ed esadecimale. Svolgimento. Per la conversione in binario, si effettua la divisione ripetuta per 2:

3853 /2 = 1926 resto 1 1926 /2 = 963 resto 0 963 /2 = 481 resto 1 481 /2 = 240 resto 1 240 /2 = 120 resto 0 120 /2 = 60 resto 0 60 /2 = 30 resto 0 30 /2 = 15 resto 0 15 /2 = 7 resto 1 7 /2 = 3 resto 1 3 /2 = 1 resto 1 1 /2 = 0 resto 1

16 fondamenti di informatica (bozza)

da destra verso sinistra, tenendo conto degli eventuali riporti. Uti- lizziamo la tabella 1.3 per calcolare le somme degli addendi e dei riporti:

0 0 0 1 1 1 1 Riporto 1 0 0 0 0 1 1 1 + 0 0 1 0 1 1 0 1 = 1 0 1 1 0 1 0 0

ottenendo 1000 0111 2 +0010 1101 2 = 1011 0100 2. Convertendo i valori in decimale, la somma `e 135 + 45 = 180. 

Esempio 1.6 Calcolare la somma binaria 1011 0111 2 + 1001 1001 2 usando n = 8 bit. Svolgimento. Applichiamo la stessa regola appena visto, ottenendo il risultato seguente:

1 0 1 1 1 1 1 1 Riporto 1 0 1 1 0 1 1 1 + 1 0 0 1 1 0 0 1 = 0 1 0 1 0 0 0 0

Poich´e abbiamo solo 8 bit a disposizione, la somma ha come ri- sultato 0101 0000 2 = 80 10 anzich´e il valore corretto 336 10 (che non e rappresentabile con 8 bit). Questo significa che sie verificato un errore di overflow : l’errore di overflow si verifica quando il risultato Errore di overflow: Errore che si verifica quando il risultato di una operazione aritmetica `e troppo grande per essere rappresentato con il numero di bit a disposizione

di una operazione aritmetica e troppo grande per poter essere rap- presentato con il numero di bit a disposizione. Nel caso della somma binaria senza segno, si verifica overflow quando l’ultimo riporto (quello piu a sinistra) `e uguale a uno. 

Rappresentazione binaria con segno Come possiamo estendere la rappresentazione binaria per rappresentare anche valori interi nega- tivi? Una possibile soluzione consiste nello sfruttare la prima cifra binaria a sinistra per indicare il segno (ad esempio, 0 = positivo, 1 = negativo). Questa strategia di rappresentazione di valori interi con segno si chiama rappresentazione in segno e modulo (signed magnitu- de representation). In questo sistema il numero 0011 rappresenta il valore +3, mentre 1101 rappresenta il valore −5. La rappresentazione in segno e modulo ha lo svantaggio di am- mettere due rappresentazioni diverse del valore zero: ad esempio, usando n = 8 bit si ha che la sequenza 0000 0000 rappresenta +0, mentre 1000 0000 rappresenta −0. Un altro svantaggio e che l’ope- razione di somma richiede modifiche per essere applicare ad addendi rappresentati in segno e modulo. Per tali motivi si preferisce una rappresentazione differente, detta in complemento a due. Per calcolare la rappresentazione in complemento a due di un intero v con n bit si puo procedere in due modi equivalenti:

Metodo 1 Se v ≥ 0, allora la rappresentazione in complemento a due di v coincide con la sua rappresentazione binaria; se v <

rappresentazione dell’informazione 17

0 allora la rappresentazione in complemento a due di v `e la rappresentazione binaria del valore positivo 2n^ + v. Metodo 2 Se v ≥ 0, allora la rappresentazione in complemento a due di v coincide con la sua rappresentazione binaria; altrimenti (i) si calcola la rappresentazione binaria di |v| (valore assoluto di v) usando n bit; (ii) si calcola il complemento a uno di quanto ottenuto, invertendo le cifre binarie (0 diventa 1, e viceversa); (iii) si incrementa di uno il risultato.

Esempio 1.7 Calcolare la rappresentazione in complemento a due con n = 8 bit dei valori seguenti: (a) 13 10 (b) − 9310 (c) 0 10 Svolgimento.

(a) Poich´e 13 e maggiore o uguale a zero, la sua rappresentazione in complemento a due coincide con la sua rappresentazione binaria normale. Applicando l’algoritmo gia visto per la conversione da decimale a binario si ha 13 10 = 0000 1101 2 C.

(b) Usando il metodo 1: il valore v = −93 e negativo, quindi la sua rappresentazione in complemento a due con n = 8 bite la rappresentazione binaria di 2n^ + v = 256 − 93 = 163. Si ha quindi − 9310 = 1010 0011 2 C. Usando il metodo 2: la rappresentazione binaria di |v| = 93 `e 0101 1101 2 , che complementato a uno diventa 1010 0010 2 (le cifre 0 diventano 1, e viceversa). A questo punto sommando 1 al risultato si ottiene − 9310 = 1010 0011 2 C , esattamente come il metodo 1.

(c) La rappresentazione in complemento a due di 0 coincide con la sua rappresentazione binaria, quindi si ha 0 10 = 0000 0000 2 C. 

La conversione da complemento a due a decimale risulta abba- stanza semplice: si procede come per la normale conversione da bina- rio a decimale, con la differenza che la prima cifra binaria a sinistra ha peso −(2n−^1 ) anzich´e 2n−^1 , dove n `e il numero di bit utilizzati.

Esempio 1.8 Calcolare il valore di 1011 0001 2 C in base 10. Svolgimento. Applicando la regola per la conversione da binario a decimale, invertendo il segno del peso del bit pi`u significativo, si ottiene: − 128 64 32 16 8 4 2 1 Pesi 1 0 1 1 0 0 0 1 − 128 +32 +16 +1 = − 79 da cui 1011 0001 2 C = − 7910. 

Esempio 1.9 Calcolare il valore di 0011 1010 2 C Svolgimento. Applicando lo stesso procedimento appena visto si ottiene:

rappresentazione dell’informazione 19

1 1 0 0 0 1 0 0 Riporto 1 1 0 1 0 1 0 0 + 1 1 1 0 0 1 0 1 = 1 0 1 1 1 0 0 1 Quindi 1101 0100 2 C + 1110 0101 2 C = 1011 1001 2 C (l’ultimo riporto viene scartato, dato che abbiamo solo n = 8 bit a disposizione); il risultato e corretto, e la corrispondente somma decimalee − 4410 + − 2710 = − 7110. 

Esempio 1.11 Calcolare la somma in complemento a due 1001 0100 2 C + 1100 0101 2 C con n = 8 bit. Svolgimento. Applicando la regola della somma binaria otteniamo:

1 0 0 0 0 1 0 0 Riporto 1 0 0 1 0 1 0 0 + 1 1 0 0 0 1 0 1 = 0 1 0 1 1 0 0 1 Ottemiamo quindi 1001 0100 2 C + 1100 0101 2 C = 0101 1001 2 C , che pero none il risultato corretto: osserviamo infatti che gli addendi sono entrambi negativi, mentre il risultato e positivo. Sie verifi- cato un errore di underflow , in quanto il risultato della somma e Errore di underflow: Errore che si verifica quando il risultato di una operazione aritmeticae troppo piccolo per poter essere rappresentato con il numero di bit a disposizione

troppo piccolo per poter essere rappresentato con il numero di bit a disposizione. 

Gli esempi appena visti indicano che la presenza di un riporto nelle somme in complemento a due non serve da sola a capire se si e verificato errore di overflow o underflow. E invece necessario usare le regole seguenti:

  • Se gli addendi sono entrambi positivi e il risultato della somma e negativo, allora sie verificato errore di overflow ;
  • Se gli addendi sono entrambi negativi e il risultato della somma e positivo, allora sie verificato errore di underflow ;
  • Se gli addendi sono di segno opposto (uno positivo e uno negati- vo), allora non si puo mai verificare n´e overflow n´e underflow, e il risultato della somma in complemento a due sara sempre corretto.

Il terzo punto richiede un approfondimento. Sappiamo che usan- do n bit possiamo rappresentare in complemento a due tutti e soli i valori interi v tali che −(2n−^1 ) ≤ v ≤ 2 n−^1 − 1. Consideriamo due interi in complemento a due x, y di segno opposto; senza per- dita di generalit`a possiamo assumere x ≥ 0 e y < 0. Poich´e sono rappresentati in complemento a due con n bit:

0 ≤ x ≤ 2 n−^1 − 1 −(2n−^1 ) ≤ y < 0

quindi, sommando tutti i termini delle diseguaglianze, si ottiene

−(2n−^1 ) ≤ x + y ≤ 2 n−^1 − 1

20 fondamenti di informatica (bozza)

da cui concludiamo che x + y `e anch’esso rappresentabile in comple- mento a due con n bit.

Decimale Compl. a due Decimale Compl. a due − (^810 10002) C 010 00002 C − (^710 10012) C 110 00012 C − (^610 10102) C 210 00102 C − (^510 10112) C 310 00112 C − (^410 11002) C 410 01002 C − (^310 11012) C 510 01012 C − (^210 11102) C 610 01102 C − (^110 11112) C 710 01112 C

Tabella 1.5: Rappresentazione deci- male e binaria di tutti i valori interi rappresentabili con n = 4 bit in complemento a due

La Tabella 1.5 mostra la rappresentazione in complemento a due di tutti i valori interi rappresentabili con n = 4 bit.

Rappresentazione in virgola mobile Fino ad ora abbiamo consi- derato valori interi. La rappresentazione di valori reali si basa su principi analoghi, e sfrutta le proprieta dei sistemi di numerazione posizionali. Un valore reale non negativo si puo rappresentare in base 10 come una sequenza (potenzialmente infinita) di cifre

... c 3 c 2 c 1 c 0. c− 1 c− 2 c− 3...

dove... c 3 c 2 c 1 c 0 sono le cifre della parte intera, e c− 1 c− 2 c− 3... sono quelle della parte frazionaria; il separatore tra la parte intera e quella frazionaria si denota con un punto nei paesi anglosassoni, e con una virgola in Italia. Il valore rappresentato dalla sequenza di cifre `e

v =

∑^ ∞

k=−∞

ck 10 k

Allo stesso modo `e possibile rappresentare un valore reale non nega- tivo in notazione binaria, con la differenza che i pesi assegnati alle cifre binarie sono potenze di due anzich´e potenze di dieci. Pertanto, il numero reale v = 010. 11012 ha valore

v = 0 × 22 + 1 × 21 + 0 × 20 Parte reale

  • 1 × 2 −^1 + 1 × 2 −^2 + 0 × 2 −^2 + 1 × 2 −^3 Parte frazionaria = 2. (^812510)

Poich´e i calcolatori non possono memorizzare direttamente sequenze infinite di cifre, i numeri reali che consideriamo nel seguito sono quelli che ammettono una espansione decimale finita. E possibile esprimere qualunque numero reale` v in notazione scientifica come v = m × 10 n

dove m e un numero reale detto mantissa, e ne un numero intero detto esponente. Pertanto, il valore 314. 760210 si pu`o scrivere in