Fondamenti di Informatica I
Monica Bianchini
ENIAC (1946 ca.)
Dipartimento di Ingegneria dell’Informazione
E-mail: [email protected]
Fondamenti di Informatica I  a.a. 2008-09
1
Sommario
Introduzione
il calcolo automatico dalla preistoria ai giorni
nostri
L’algebra di Boole
da Analisi Matematica della Logica (1847) al
progetto degli elaboratori digitali
Sistemi di numerazione
da additivo a posizionale, da decimale a binario,
a esadecimale: l’alfabeto dell’elaboratore
UNIVAC (1951)
La rappresentazione dei dati e
l’aritmetica degli elaboratori
dai bit ai numeri, ai testi, alle immagini, alla
musica, ai video in digitale
Fondamenti di Informatica I  a.a. 2008-09
2
Introduzione
Fondamenti di Informatica I  a.a. 2008-09
3
Cenni storici  1
Anche se la presenza “invasiva” dell’informatica nella vita di
tutti i giorni è un fenomeno relativamente recente, non
recente è la necessità di avere a disposizione strumenti e
metodi per contare rapidamente, elaborare dati, “calcolare”
Le prime testimonianze di strumenti per contare risalgono a
30.000 anni fa
I primi esempi di algoritmi  procedure di calcolo “automatico”
 sono stati ritrovati in Mesopotamia su tavolette babilonesi
risalenti al 18001600 a.C.
Il sogno di costruire macchine capaci di effettuare calcoli
automatici affonda le radici nel pensiero filosofico del ‘600:
Pascal e Leibniz non solo affrontarono il problema, già studiato
da Cartesio, di automatizzare il ragionamento logico
matematico, ma si cimentarono nella realizzazione di semplici
macchine per calcolare (capaci di effettuare somme e
sottrazioni)
Fondamenti di Informatica I  a.a. 2008-09
4
Cenni storici  2
La macchina alle differenze, concepita da Babbage nel 1833,
rappresenta il primo esempio di macchina programmabile di
utilità generale
La prima programmatrice nella storia dell’informatica è Ada
Augusta Byron, contessa di Lovelace
In seguito, lo stesso Babbage progetta la macchina analitica
(mai realizzata, troppo complessa e critica la sua costruzione
per le tecnologie meccaniche dell’epoca)
Fondamenti di Informatica I  a.a. 2008-09
5
Cenni storici  3
Fu Herman Hollerith, nel 1890, a sviluppare la macchina a
schede perforate, per compiere le statistiche del censimento
decennale degli Stati Uniti
I dati venivano immessi su schede di cartone opportunamente
perforate, le stesse schede che sono state usate fino a due
decenni or sono
Le schede venivano successivamente “contate” da una sorta di
pantografo che permetteva diversi tipi di elaborazioni (totali,
medie, statistiche, etc.)
Si impiegarono due anni e mezzo ad analizzare i dati (contro i
sette anni del censimento del 1880), nonostante l’incremento di
popolazione da 50 a 63 milioni
Fondamenti di Informatica I  a.a. 2008-09
6
Cenni storici  4
Successivamente la macchina a schede perforate venne
utilizzata con successo per i censimenti in Austria, Norvegia
e Russia, tanto che Hollerith decise di fondare una società:
la Computing Tabulating Recording Company che, nel 1923,
divenne l’International Business Machine, o IBM
Nel 1932, il tedesco Konrad Zuse realizza una macchina
elettromeccanica in grado di eseguire calcoli con controllo
programmato, ed introduce il sistema di numerazione binario
(la cui algebra era stata definita da Leibniz e da Boole)
Fondamenti di Informatica I  a.a. 2008-09
7
Cenni storici  5
Durante la seconda guerra mondiale, fioriscono i progetti di
elaboratori da utilizzarsi per scopi bellici
Enigma, realizzata dai tedeschi per
codificare le comunicazioni militari
Red Purple, di costruzione giapponese
Computer Colossus, costruito dagli inglesi
per la decifrazione dei messaggi tedeschi,
alla cui progettazione e realizzazione
collaborò Alan Turing, permise la vittoria
angloamericana sull’Atlantico
Fondamenti di Informatica I  a.a. 2008-09
La macchina Enigma
8
Cenni storici  6
Con l’invenzione del tubo a vuoto (1904), del transistor
(1947) e, infine, dei circuiti integrati (1969), l’evoluzione dei
computer divenne inarrestabile
Attualmente la potenza di calcolo degli elaboratori decuplica
ogni 56 anni (…ma non può durare, almeno con le
tecnologie in uso)
Fondamenti di Informatica I  a.a. 2008-09
9
Cenni storici  7
La costruzione dei primi calcolatori risale all’inizio degli anni
‘40, grazie alla tecnologia elettronica; i primi esemplari
venivano programmati mediante connessioni elettriche e
commutatori (ENIAC, Mark I)
Il nome di Von Neumann è legato invece ai primi calcolatori a
programma memorizzato realizzati alla fine degli anni ‘40
(EDSAC, Whirlwind, IAS, UNIVAC)
Per la prima volta, vige il principio di unitarietà di
rappresentazione di dati e istruzioni, che vengono codificati,
all’interno dell’elaboratore, in maniera indistinguibile
La diffusione dei calcolatori a livello mondiale è avvenuta nei
decenni ‘60 e ‘70
Fondamenti di Informatica I  a.a. 2008-09
10
Cenni storici  8
ENIAC (1946)
Whirlwind (1949)
Fondamenti di Informatica I  a.a. 2008-09
Mark I (1948)
IAS (1952)
EDSAC (1949)
UNIVAC (1952)
11
Cenni storici  9
Tuttavia, l’esplosione dell’informatica come fenomeno di
massa è datata 1981, anno in cui l’IBM introdusse un tipo
particolare di elaboratore: il Personal Computer (PC)
La particolarità dei PC consisteva nell’essere “assemblati” con
componenti facilmente reperibili sul mercato (e quindi a
basso costo)
Possibilità per qualsiasi casa produttrice di costruire “cloni”
Attualmente i PC, o meglio il loro componente fondamentale
 il microprocessore  è utilizzato in tutti i settori
applicativi (non solo per elaborare dati):
Telefoni cellulari
Ricevitori satellitari digitali
Bancomat e carte di credito
Lavatrici e forni a microonde
Computer di bordo e ABS
...
Fondamenti di Informatica I  a.a. 2008-09
12
Cenni storici  10
L’esigenza di realizzare sistemi di elaborazione dotati di più
processori operanti in parallelo è stata sentita fin dalla preistoria
dell’informatica
In una relazione dello scienziato, generale e uomo politico italiano
Menabrea, datata 1842, sulla macchina analitica di Babbage, si fa
riferimento alla possibilità di usare più macchine dello stesso tipo in
parallelo, per accelerare calcoli lunghi e ripetitivi
Solo la riduzione dei costi dell’hardware ha consentito, verso la fine
degli anni ‘60, l’effettiva costruzione dei primi supercalcolatori,
come le macchine CDC6600 e Illiac e, successivamente, il Cray e le
macchine vettoriali
A partire dagli anni ‘90, gli ulteriori sviluppi della microelettronica
hanno permesso la realizzazione di calcolatori a parallelismo
massiccio e a “grana fine”, caratterizzati dall’interconnessione di
decine di migliaia di unità di elaborazione estremamente
elementari: le reti neurali, capaci di “simulare” il comportamento
del cervello umano, sulla base degli studi di McCulloch e Pitts
(1943)
Fondamenti di Informatica I  a.a. 2008-09
13
Cenni storici  11
Cray 1 (1976)
Illiac (1955)
Cray X1 (2002)
CDC 6600 (1963)
PC IBM (1981)
Fondamenti di Informatica I  a.a. 2008-09
Portatile e Palmare (oggi)
14
Frasi celebri ed altro…
“Penso che ci sia mercato nel mondo per non più di cinque
computer.” (Thomas Watson, Presidente di IBM, 1943)
“Ho girato avanti e indietro questa nazione (USA) e ho parlato
con la gente. Vi assicuro che questa moda dell’elaborazione
automatica non vedrà l’anno prossimo.” (Editor di libri
scientifici di Prentice Hall, 1947)
“Nel futuro i computer verranno a pesare non più di una
tonnellata e mezzo.” (Popular Mechanichs, 1949)
Nel 1976, il New York Times pubblicò un libro dal titolo La
scienza nel ventesimo secolo, nel quale il calcolatore veniva
menzionato una sola volta e indirettamente, in relazione al
calcolo delle orbite dei pianeti
“Non c’è ragione perché qualcuno possa volere un computer a
casa sua.” (Ken Olson, fondatore di Digital, 1977)
Fondamenti di Informatica I  a.a. 2008-09
15
Che cos’è l’informatica  1
Informatica  fusione delle parole informazione e
automatica  l’insieme delle discipline che studiano gli
strumenti per l’elaborazione automatica dell’informazione e i
metodi per un loro uso corretto ed efficace
L’informatica è la scienza della
dell’elaborazione dell’informazione
rappresentazione
e
L’accento sull’ “informazione” fornisce una spiegazione del
perché l’informatica sia ormai parte integrante di molte attività
umane: laddove deve essere gestita dell’informazione,
l’informatica è un valido strumento di supporto
Il termine “scienza” sottolinea il fatto che, nell’informatica,
l’elaborazione dell’informazione avviene in maniera sistematica
e rigorosa, e pertanto può essere automatizzata
Fondamenti di Informatica I  a.a. 2008-09
16
Che cos’è l’informatica  2
L’informatica non è, quindi, la scienza e la tecnologia dei
calcolatori elettronici: il calcolatore è lo strumento che la
rende “operativa”
L’elaboratore (computer, calcolatore) è un’apparecchiatura
digitale, elettronica ed automatica capace di effettuare
trasformazioni sui dati:
Digitale: i dati sono rappresentati mediante un alfabeto finito,
costituito da cifre (digit), che ne permette il trattamento
mediante regole matematiche
Elettronica: realizzazione tramite tecnologie di tipo elettronico
Automatica: capacità di eseguire una successione di operazioni
senza interventi esterni
“La disumanità del computer sta nel fatto che, una volta
programmato e messo in funzione, si comporta in maniera
perfettamente onesta.” (Isaac Asimov)
Fondamenti di Informatica I  a.a. 2008-09
17
L’architettura di Von Neumann
La capacità dell’elaboratore di eseguire successioni di
operazioni in modo automatico è determinata dalla presenza
di un dispositivo di memoria
Nella memoria sono registrati i dati e...
...la descrizione delle operazioni da eseguire su di essi
(nell’ordine secondo cui devono essere eseguite): il
programma, la “ricetta” usata dall’elaboratore per svolgere il
suo compito
Il programma viene interpretato dall’unità di controllo

Modello di Von Neumann
Fondamenti di Informatica I  a.a. 2008-09
18
La macchina universale
Programma: sequenza di operazioni atte a predisporre
l’elaboratore alla soluzione di una determinata classe di
problemi
Il programma è la descrizione di un algoritmo in una forma
comprensibile all’elaboratore
Algoritmo: sequenza finita di istruzioni attraverso le quali un
operatore umano è capace di risolvere ogni problema di una
data classe; non è direttamente eseguibile dall’elaboratore
L’elaboratore è una macchina universale: cambiando il
programma residente in memoria, è in grado di risolvere
problemi di natura diversa (una classe di problemi per ogni
programma)
Fondamenti di Informatica I  a.a. 2008-09
19
Ancora sull’informatica...
L’informatica è lo studio sistematico degli algoritmi che
descrivono e trasformano l’informazione: la loro teoria,
analisi, progetto, efficienza, realizzazione (ACM 
Association for Computing Machinery)
Nota: È possibile svolgere un’attività concettualmente di tipo
informatico senza l’ausilio del calcolatore, per esempio nel
progettare ed applicare regole precise per svolgere
operazioni aritmetiche con carta e penna; l’elaboratore,
tuttavia, è uno strumento di calcolo potente, che permette la
gestione di quantità di informazioni altrimenti intrattabili
Fondamenti di Informatica I  a.a. 2008-09
20
L’algebra di Boole
Fondamenti di Informatica I  a.a. 2008-09
21
Algebra Booleana
Contempla due costanti 0 e 1 (falso e vero)
Corrispondono a due stati che si escludono a vicenda
Possono descrivere lo stato di apertura o chiusura di un
generico contatto o di un circuito a più contatti
0
1
Si definiscono delle operazioni fra i valori booleani:
AND, OR, NOT sono gli operatori fondamentali
Fondamenti di Informatica I  a.a. 2008-09
22
L’operazione di OR
Si definisce l’operazione di somma logica (OR):
il valore della somma logica è il simbolo 1 se il valore di
almeno uno degli operandi è il simbolo 1
00
01
10
11




0
1
1
1
Fondamenti di Informatica I  a.a. 2008-09
0
0
0
1
0+0
0+1
1
1
0
1
1+0
1+1
23
L’operazione di AND
Si definisce l’operazione di prodotto logico (AND):
il valore del prodotto logico è il simbolo 1 se il valore di
tutti gli operandi è il simbolo 1
00
01
10
11




0
0
0
1
0
0
00
1
0
10
Fondamenti di Informatica I  a.a. 2008-09
0
1
01
1
1
11
24
La negazione NOT
Si definisce l’operatore di negazione (NOT):
l’operatore inverte il valore della costante su cui opera
0  1
1  0
Dalla definizione…
0  0
1  1
Fondamenti di Informatica I  a.a. 2008-09
25
Variabili binarie
Una variabile binaria indipendente può assumere uno
dei due valori 0 e 1
0
A
1
Date N variabili binarie indipendenti, la loro somma
logica (OR) è
1 se almeno una Ni vale 1
A+B+C+D+….N =
Fondamenti di Informatica I  a.a. 2008-09
0 se A= B= …= N = 0
26
AND e NOT con variabili binarie
Date n variabili binarie indipendenti, il loro prodotto
logico (AND) è
0 se almeno una Ni vale 0
A B … N =
1 se A= B= …= N = 1
La negazione di una variabile A è
A = 0 se A = 1
A = 1 se A = 0
Fondamenti di Informatica I  a.a. 2008-09
27
Alcune identità
Si verificano
A1A
A00
AAA
A + 1  1
A + 0  A
A + A  A
Ad esempio…
A 1  A
A 1
A 0
01  0
11  1
OK!
Fondamenti di Informatica I  a.a. 2008-09
28
Altre proprietà
Per gli operatori AND e OR valgono le seguenti proprietà:
commutativa A+B  B+A
AB  BA
associativa
A+B+CA+(B+C)
ABCA (BC)
distributiva del prodotto rispetto alla somma AB+AC  A(B+C)
Per l’operatore NOT si provano le seguenti identità:
A + A  1
A  A  0
A A
Fondamenti di Informatica I  a.a. 2008-09
29
Proprietà dell’Algebra di Boole
Fondamenti di Informatica I  a.a. 2008-09
30
Teoremi 1 dell’Algebra di Boole
Fondamenti di Informatica I  a.a. 2008-09
31
Teoremi 1 dell’Algebra di Boole
Fondamenti di Informatica I  a.a. 2008-09
32
Configurazioni delle variabili
Date N variabili binarie indipendenti A, B,…, Ni, queste
possono assumere 2n configurazioni distinte
Ad esempio per N3 si hanno 8 configurazioni
000 001 010 011
100 101 110 111
A BC
Una configurazione specifica è individuata univocamente
da un AND (a valore 1) di tutte le variabili, dove quelle
corrispondenti ai valori 0 compaiono negate
010
Fondamenti di Informatica I  a.a. 2008-09
A BC
33
Funzioni logiche
Una variabile y è una funzione delle N variabili
indipendenti A, B,…, Ni, se esiste un criterio che fa
corrispondere in modo univoco ad ognuna delle 2n
configurazioni delle xi un valore di y
y = F(A,B,…,Ni)
Una rappresentazione esplicita di una funzione è la
tabella di verità, in cui si elencano tutte le possibili
combinazioni di A, B, …, Ni, con associato il valore di y
y = A+B
Fondamenti di Informatica I  a.a. 2008-09
B
A
y
0
0
1
1
0
1
0
1
0
1
1
1
34
Una tabella di verità
Date tre variabili booleane (A,B,C), si scriva la funzione
F che vale 1 quando solo due di esse hanno valore 1
A
B C
F
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
0
1
0
1
1
0
0
1
0
1
0
1
0
1
Si può scrivere la funzione
come somma logica delle
configurazioni corrispondenti
agli 1
F(A,B,C)  ABC  ABC  ABC
Forma canonica: somma di prodotti (OR di AND)
 tutte le funzioni logiche si possono scrivere in questa forma
Fondamenti di Informatica I  a.a. 2008-09
35
Un esempio: lo XOR
La funzione XOR verifica la disuguaglianza di due
variabili
A
B XOR
0
0
1
1
0
1
0
1
0
1
1
0
L’espressione come somma di prodotti è quindi...
XOR = A B + AB
Fondamenti di Informatica I  a.a. 2008-09
36
Un circuito con due interruttori
I due interruttori corrispondono a due variabili (A,B) a
valori booleani  le variabili assumono i due valori 0 e 1
che corrispondono alle due posizioni dell’interruttore
A
A
0
0
1
1
B
L
A
A
B
A=0 B=0
A
A
0
0
1
1
B
L
B
A=1 B=0
Fondamenti di Informatica I  a.a. 2008-09
A
A
0
0
1
1
B
L
B
A
B
L
A=0 B=1
0
0
1
1
0
1
0
1
1
0
0
1
0
0
1
1
B
B
L
L = ABAB
A=1 B=1
37
Un esercizio
Progettare un circuito per accendere e spegnere una
lampada da uno qualsiasi di tre interruttori indipendenti
L = 0
Cambia lo
stato di un
interruttore
qualsiasi
0
0
0
1
1
1
A
0
B
0
L = 1
0
0
0
1
1
1
A
0
Fondamenti di Informatica I  a.a. 2008-09
C
0
B
1
C
0
38
Analisi delle combinazioni
Si considera cosa accade a partire dalla configurazione di partenza,
cambiando lo stato di un interruttore per volta
L = 0
L = 1
L = 0
A
B
C
A
B
C
0
0
1
0
1
1
L = 1
L = 0
A
B
C
A
B
C
A
B
C
0
0
0
0
1
0
1
0
1
A
B
C
1
1
1
L = 0
L = 1
A
B
C
A
B
C
1
0
0
1
1
0
Fondamenti di Informatica I  a.a. 2008-09
L = 1
39
Scrittura della funzione logica
Dalle otto combinazioni si ottiene la tabella di verità della
funzione logica
A
B
C
L
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
1
0
1
0
0
1
Si può scrivere la funzione L come somma logica di
prodotti logici
L  ABC  ABC  ABC  ABC
Fondamenti di Informatica I  a.a. 2008-09
40
Come collegare gli interruttori
Si può manipolare l’espressione di L usando la proprietà
distributiva dell’AND rispetto all’OR
L  ABC  ABC  ABC  ABC
L  A (BC  BC)  A (BC  BC)
B
C
A
B
C
A
B
C
B
C
1 0 0
Fondamenti di Informatica I  a.a. 2008-09
B
C
A
B
C
A
B
C
B
C
1 0 1
41
Esercizi
Esercizio 1
Siano a2, a1, b2, b1 i bit che rappresentano due numeri interi
positivi (Aa2a1 e Bb2b1). Sia r una variabile booleana che
vale 1 se e solo A è maggiore di B (AB). Ad esempio,
quando A11 e B10, allora a21, a11, b21, b10 e r1. Si
scriva la forma canonica che definisce r come funzione di a2,
a1, b2, b1.
Esercizio 2
I signori A, B, C e D fanno parte di un consiglio di
amministrazione. Sapendo che hanno a disposizione le
seguenti quote di possesso azionario A40%, B25%,
C20%, D15%, formalizzare tramite tabella di verità (con
successiva estrazione della forma canonica) la funzione
booleana che decide quando il consiglio di amministrazione
è in grado di approvare una mozione.
Fondamenti di Informatica I  a.a. 2008-09
42
Esercizi (continua)
Esercizio 3
Il direttore di una squadra di calcio vuol comprare 4
giocatori dal costo di 2, 5, 6 e 8 milioni di euro, ma ha a
disposizione solo 8 milioni. Siano a2, a5, a6, a8 variabili
booleane che valgono 1 se e solo se si acquistano,
rispettivamente, i giocatori da 2, 5, 6, 8 milioni. Sia r una
variabile che è vera se e solo se l’insieme di giocatori che si
decide di comprare costa meno della cifra disponibile. Ad
esempio, se a21, a51, a60, a80, allora r1. Si scriva la
forma canonica che definisce r come funzione delle variabili
a2, a5, a6, a8.
Fondamenti di Informatica I  a.a. 2008-09
43
Sistemi di numerazione
Fondamenti di Informatica I  a.a. 2008-09
44
Ancora un po’ di preistoria…
I primi esempi di utilizzo di sistemi di numerazione
risalgono al neolitico, ovvero a circa 50.000 anni fa
In epoca preistorica, le più utilizzate furono le basi 2, 5,
10, 20, 12, e 60
Mentre le basi 2, 5 10 e 20 sono suggerite dalla fisiologia
umana, 12 e 60 sembrano suggerite da scopi utilitaristici: 12 è
divisibile per 1, 2, 3, 4, 6 e 12 mentre 60 per 1, 2, 3, 4, 5, 6, 12,
15, 20, 30 e 60
Da notare che il 7 non compare mai nelle basi di numerazione e,
in effetti, ebbe significati particolari, anche religiosi, presso i
popoli antichi
La base 12 è ancora utilizzata in certe misure di tempo, 60 nella
misurazione di angoli e tempo
Fondamenti di Informatica I  a.a. 2008-09
45
…E di storia
Tra le prime testimonianze certe dell’utilizzo di concetti
numerici avanzati vi sono le tavole numeriche babilonesi,
elenchi di numeri utilizzati per calcoli astronomici e di
agrimensura, risalenti al X secolo a.C.
Tuttavia nelle culture dell’antica Mesopotamia esistevano
tabelle per le addizioni e le sottrazioni già durante il
regno di Sargon I, intorno al 2350 a.C.
Il documento più significativo dell’antico Egitto è il papiro
di Ahmes o Ahmose, dal nome dello scriba che lo
compose nel 1650 a.C.
Lo stesso Ahmes sostiene inoltre che il suo materiale è
tratto da un documento anteriore, e fa risalire l’originale
ad Imhotep, medico e architetto del faraone Djoser della
III dinastia, e quindi al 2650 a.C. circa
Fondamenti di Informatica I  a.a. 2008-09
46
I numeri in Mesopotamia  1
Appartengono alla civiltà dei Sumeri varie tavolette che
contengono i più antichi segni numerali usati dall’uomo e
risalgono al 35003000 a.C.
I simboli fondamentali usati nella numerazione sumera
corrispondono ai numeri 1, 10, 60, 600, 3600, 36000
La numerazione è additiva, cioè i numeri si scrivono
disponendo uno accanto all’altro i simboli fondamentali
Fondamenti di Informatica I  a.a. 2008-09
47
I numeri in Mesopotamia  2
Un ruolo speciale spetta ai numeri 10 e 60: caratteristica
ereditata dal sistema babilonese
I Babilonesi usavano infatti la scrittura cuneiforme, con
due simboli fondamentali, un cuneo verticale per le unità
e una parentesi uncinata per le decine: si
rappresentavano i numeri da 1 a 59
Per i numeri successivi, si ha la prima testimonianza
dell’uso di una notazione posizionale
Non si introducevano infatti altri simboli, ma si
affiancavano gruppi di cunei per indicare le successive
potenze del 60
Si tratta dunque di un sistema di numerazione posizionale
in base 60
Fondamenti di Informatica I  a.a. 2008-09
48
I numeri in Mesopotamia  3
Fondamenti di Informatica I  a.a. 2008-09
49
I numeri in Mesopotamia  4
Ad esempio:
= 7322
Il sistema di spaziatura consentiva di risolvere le
ambiguità di interpretazione dei raggruppamenti
Ai tempi di Alessandro Magno era però invalso anche
l’uso di un simbolo (due cunei obliqui) per indicare un
posto vuoto; questo simbolo svolgeva alcune funzioni del
nostro zero, ma non tutte: veniva usato fra colonne e
mai per indicare colonne vuote alla fine della sequenza
Fondamenti di Informatica I  a.a. 2008-09
50
I numeri nell’antico Egitto  1
La matematica egizia utilizzava la base 10, ed impiegava
simboli diversi per rappresentare le diverse potenze del
10, da 1 a 106
I geroglifici utilizzati erano:
Pastoia per bestiame o giogo
Rotolo di fune
Bastoncino
Ninfea o fiore di loto
Uomo a braccia levate,
simbolo del dio Heh
Dito
Fondamenti di Informatica I  a.a. 2008-09
Girino o rana
51
I numeri nell’antico Egitto  2
I numeri venivano formati raggruppando i simboli,
generalmente posti in ordine dal più piccolo al più
grande, da sinistra a destra
Il sistema di numerazione non è, tuttavia, posizionale
L’ordine dei simboli che rappresentano le potenze del 10
può essere alterato senza cambiare il valore della quantità
rappresentata
L’ordine è una sorta di convenzione linguistica, senza
significato matematico
Fondamenti di Informatica I  a.a. 2008-09
52
I numeri nell’antico Egitto  3
=131.200
Fondamenti di Informatica I  a.a. 2008-09
53
I numeri nell’antico Egitto  4
Esempi di operazioni
Addizione: si effettua sommando i simboli uguali e, qualora
si superi il valore 10, sostituendo i dieci simboli con il
simbolo opportuno (quello subito “superiore” nella
gerarchia)
Moltiplicazione: utilizza un sistema che sottintende la base
due
si scompone il moltiplicatore in potenze di 2, poi si raddoppia
il moltiplicando tante volte quante necessario, e infine si
esegue la somma
Fondamenti di Informatica I  a.a. 2008-09
54
I numeri nell’antico Egitto  5
Esempio: 713
13
=91
Fondamenti di Informatica I  a.a. 2008-09
55
I numeri nell’antica Grecia  1
Nella civiltà greca classica sono noti due principali sistemi
di numerazione
Il primo, più antico, è noto come attico ed è per molti
aspetti simile a quello in uso presso i Romani; utilizzava
infatti accanto ai simboli fondamentali per l’1 e le potenze
di 10 fino a 10000, un simbolo speciale per il 5, che
combinato con i precedenti, dava altri simboli anche per
50, 500, 5000, 50000
Compaiono testimonianze di questo sistema dal V al I
secolo a.C. ma, a partire dal III secolo, si diffonde anche il
sistema detto ionico o alfabetico
Fondamenti di Informatica I  a.a. 2008-09
56
I numeri nell’antica Grecia  2
Il sistema ionico si serve di ventisette simboli alfabetici
(alcuni dei quali arcaici e non più usati nella Grecia
classica) per indicare le unità da 1 a 9, le decine da 10 a
90, le centinaia da 100 a 900
Si usavano poi nuovamente le prime nove lettere
precedute da un apice in basso per indicare i multipli di
1000, e per esprimere numeri ancora più grandi si
ricorreva al simbolo M (iniziale di miriade) che indicava la
moltiplicazione per 10000 del numero che seguiva
 Sistema di numerazione decimale additivo
Fondamenti di Informatica I  a.a. 2008-09
57
I numeri nell’antica Grecia  3
Ad esempio:
= 67.766.776
Fondamenti di Informatica I  a.a. 2008-09
58
I numeri nell’antica Roma  1
Nel sistema di numerazione romano, a base decimale, ci
si serviva, come è noto, anche di simboli speciali per
indicare 5, 50, 500
Alcune antiche epigrafi inducono a ritenere che i segni
usati fossero inizialmente segni speciali, forse di origine
etrusca, che solo successivamente furono identificati con
le lettere I, V, X, L, C, D, M
I V X
L
C
D
1 5 10 50 100 500
Fondamenti di Informatica I  a.a. 2008-09
M
1000
59
I numeri nell’antica Roma  2
La scrittura dei numeri avveniva combinando
additivamente i segni
Per agevolare scrittura e lettura si diffuse più tardi un
sistema sottrattivo già utilizzato, ad esempio, dagli Assiri
(che ha traccia anche nelle forme verbali come ad
esempio “undeviginti”, stessa cosa di “decem et novem”)
Un simbolo posto alla sinistra di un simbolo di quantità
maggiore viene sottratto, così IX e VIIII indicano entrambi
il numero 9
Ancora in epoca tarda, un segno che prese l’aspetto di
una linea orizzontale posta sopra le lettere serviva per
indicarne la moltiplicazione per 1000
Fondamenti di Informatica I  a.a. 2008-09
60
Dall’India… il sistema decimale  1
La civiltà indiana, più antica delle civiltà classiche, è già
documentata dal 3000 a.C.
Sebbene l’uso della matematica dovesse essere ben
sviluppato già in epoca arcaica, i primi testi che ci sono
giunti risalgono al V secolo d.C.
Non è però ancora chiaro dove e quando si sia sviluppato
il sistema di notazione decimale posizionale che, in
seguito, attraverso gli Arabi, si è diffuso in Europa
Fondamenti di Informatica I  a.a. 2008-09
61
Dall’India… il sistema decimale  2
Tale sistema viene utilizzato nell’opera del matematico
indiano vissuto attorno al 500 d.C. Aryabhata, la più
antica che ci è pervenuta se si eccettuano frammenti
sparsi di matematici anteriori, dove però manca ancora
l’uso di un simbolo zero
Testimonianze di scritture in forma posizionale si
registrano anche prima del manuale di Aryabhata,
mentre per avere datazioni sicure di forme complete in
cui compare anche il simbolo zero occorre arrivare al IX
secolo d.C.
Fondamenti di Informatica I  a.a. 2008-09
62
Dall’India… il sistema decimale  3
L’idea di usare un numero limitato di simboli a cui dare
valore diverso a seconda della posizione occupata può
essere stata, secondo alcuni studiosi, sviluppata dagli
Indiani per conoscenza diretta  o ereditata dai Greci 
del sistema sessagesimale babilonese
Gli Indiani avrebbero allora iniziato ad utilizzare
solamente i primi 9 simboli del loro sistema decimale in
caratteri Brahmi, in uso dal III secolo a.C.
Fondamenti di Informatica I  a.a. 2008-09
63
Dall’India… il sistema decimale  4
I simboli assumono forme diverse a seconda delle zone e
dei periodi, ma sono comunque quelli che gli Arabi più
tardi utilizzarono e che, dalla forma araba, sono passati
in Europa, fino alla forma definitiva resa uniforme dalla
stampa nel XV secolo
Fondamenti di Informatica I  a.a. 2008-09
64
Sistemi di numerazione posizionali
Sistemi di numerazione posizionali:
La base del sistema di numerazione
Le cifre del sistema di numerazione
Il numero è scritto specificando le cifre in ordine ed il
suo valore dipende dalla posizione relativa delle cifre
Esempio: Il sistema decimale (Base 10)
Cifre : 0 1 2 3 4 5 6 7 8 9
5641  5·103 + 6·102 + 4·101 + 1·100
Posizione: 3 2 1 0
Fondamenti di Informatica I  a.a. 2008-09
65
Sistemi in base B
La base definisce il numero di cifre diverse nel sistema
di numerazione
La cifra di minor valore è sempre lo 0; le altre sono,
nell’ordine, 1,2,…,B1; se B>10 occorre introdurre B10
simboli in aggiunta alle cifre decimali
Un numero intero N si rappresenta con la scrittura (cncn1…c2c1c0)B
N = cnBn+cn1Bn1+...+c2B2+c1B1+c0B0
cn è la cifra più significativa, c0 la meno significativa
Un numero frazionario N’ si rappresenta come (0,c1c2…cn)B
N’ = c1B1+c2B2+...+cnBn
Fondamenti di Informatica I  a.a. 2008-09
66
Numeri interi senza segno
Con n cifre in base B si rappresentano tutti i numeri
interi positivi da 0 a Bn1 (Bn numeri distinti)
Esempio: base 10
2 cifre: da 0 a 1021 = 99
Esempio: base 2
2 cifre: da 0 a 221 = 3
Fondamenti di Informatica I  a.a. 2008-09
00
01
02
….
98
99
102 = 100 valori
00
01
10
11
22 = 4 valori
67
Il sistema binario (B=2)
La base 2 è la più piccola per un sistema di numerazione
Cifre: 0 1  bit (binary digit)
Esempi:
Forma
polinomia
(101101)2 = 125 + 024 + 123 + 122 + 021 + 120 =
32 + 0 + 8 + 4 + 0 + 1 = (45)10
(0,0101)2 = 021 + 122 + 023 + 124 =
0 + 0,25 + 0 + 0,0625 = (0,3125)10
(11,101)2 = 121 + 120 + 121 + 022 + 123 =
2 + 1 + 0,5 + 0 + 0,125 = (3,625)10
Fondamenti di Informatica I  a.a. 2008-09
68
Dal bit al byte
Un byte è un insieme di 8 bit (un numero binario a 8 cifre)
b7b6b5b4b3b2b1b0
Con un byte si rappresentano i numeri interi fra 0 e 281  255
00000000
00000001
00000010
00000011
…………….
11111110
11111111
28  256 valori distinti
È l’elemento base con cui si rappresentano i dati nei calcolatori
Si utilizzano sempre dimensioni multiple (di potenze del 2) del
byte: 2 byte (16 bit), 4 byte (32 bit), 8 byte (64 bit)…
Fondamenti di Informatica I  a.a. 2008-09
69
Dal byte al kilobyte
Potenze del 2
24 = 16
28 = 256
216 = 65536
210 = 1024
(K=Kilo)
220 = 1048576
(M=Mega)
230 = 1073741824 (G=Giga)
Cosa sono KB (Kilobyte), MB (Megabyte), GB (Gigabyte)?
1
1
1
1
KB = 210 byte = 1024 byte
MB = 220 byte = 1048576 byte
GB = 230 byte = 1073741824 byte
TB = 240 byte = 1099511627776 byte (Terabyte)
Fondamenti di Informatica I  a.a. 2008-09
70
Da decimale a binario
Numeri interi
Si divide ripetutamente il numero intero decimale per 2 fino ad
ottenere un quoziente nullo; le cifre del numero binario sono i resti
delle divisioni; la cifra più significativa è l’ultimo resto
Esempio: convertire in binario (43)10
43 : 2 = 21
21 : 2 = 10
10 : 2 = 5
5:2= 2
2:2= 1
1:2= 0
+1
+1
+0
+1
+0
+1
resti
bit più significativo
(43)10 = (101011)2
Fondamenti di Informatica I  a.a. 2008-09
71
Da decimale a binario
Numeri razionali
Si moltiplica ripetutamente il numero frazionario decimale per 2,
fino ad ottenere una parte decimale nulla o, dato che la condizione
potrebbe non verificarsi mai, per un numero prefissato di volte; le
cifre del numero binario sono le parti intere dei prodotti successivi;
la cifra più significativa è il risultato della prima moltiplicazione
Esempio: convertire in binario (0,21875)10 e (0,45)10
0,21875
0,4375
0,875
0,75
0,5
 2 = 0 ,4375
 2 = 0,875
 2 = 1,75
 2 = 1,5
 2 = 1,0
(0,21875)10 = (0,00111)2
Fondamenti di Informatica I  a.a. 2008-09
0,45
0,90
0,80
0,60
0,20





2
2
2
2
2
=
=
=
=
=
0,9
1,8
1,6
1,2
0,4 etc.
(0,45)10  (0,01110)2
72
Da binario a decimale
Oltre all’espansione esplicita in potenze del 2  forma polinomia…
(101011)2 = 125 + 024 + 123 + 022 + 121 + 120 = (43)10
…si può operare nel modo seguente: si raddoppia il bit più
significativo e si aggiunge al secondo bit; si raddoppia la somma e
si aggiunge al terzo bit… si continua fino al bit meno significativo
Esempio: convertire in decimale (101011)2
bit più significativo
1x2=
2x2=
5x2=
10 x 2 =
21 x 2 =
2 + 0
4 + 1
10 + 0
20 + 1
42 + 1 = 43
(101011)2 = (43)10
Fondamenti di Informatica I  a.a. 2008-09
73
Sistema esadecimale
La base 16 è molto usata in campo informatico
Cifre: 0 1 2 3 4 5 6 7 8 9 A B C D E F
La corrispondenza in decimale delle cifre oltre il 9 è
Esempio:
A = (10)10
B = (11)10
C = (12)10
D = (13)10
E = (14)10
F = (15)10
(3A2F)16 = 3163 + 10162 + 2161 + 15160 =
34096 + 10256 + 216 + 15
= (14895)10
Fondamenti di Informatica I  a.a. 2008-09
74
Da binario a esadecimale
Una cifra esadecimale corrisponde a 4 bit
0 corrisponde a 4 bit a 0
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7
1000
1001
1010
1011
1100
1101
1110
1111
8
9
A
B
C
D
E
F F corrisponde a 4 bit a 1
Si possono rappresentare numeri binari lunghi con poche cifre (1/4)
La conversione da binario ad esadecimale è immediata,
raggruppando le cifre binarie in gruppi di 4 (da destra) e
sostituendole con le cifre esadecimali secondo la tabella precedente
Fondamenti di Informatica I  a.a. 2008-09
75
Dai bit all’hex
Un numero binario di 4n bit corrisponde a un numero
esadecimale di n cifre
Esempio: 32 bit corrispondono a 8 cifre esadecimali
1101 1001 0001 1011 0100 0011 0111 1111
D
9
1
B
4
3
7
F
(D91B437F)16
Esempio: 16 bit corrispondono a 4 cifre esadecimali
0000 0000 1111 1111
0
0
F
F
(00FF)16
Fondamenti di Informatica I  a.a. 2008-09
76
Da esadecimale a binario
La conversione da esadecimale a binario si ottiene
espandendo ciascuna cifra con i 4 bit corrispondenti
Esempio: convertire in binario il numero esadecimale 0x0c8f
Notazione usata in molti linguaggi di
programmazione (es. C e Java) per
rappresentare numeri esadecimali
0
c
8
f
0000 1100 1000 1111
Il numero binario ha 4 x 4 16 bit
Fondamenti di Informatica I  a.a. 2008-09
77
Esempi  1
In qualsiasi base, l’essere il sistema di numerazione posizionale
impone che combinazioni diverse di cifre uguali rappresentino
numeri diversi; ad esempio:
(319)10  (193)10
(152)6  (512)6, infatti...
(152)6=162+561+260=36+30+2=(68)10
(512)6=562+161+260=180+6+2=(188)10
Numeri che hanno identica rappresentazione, in basi diverse,
hanno valori diversi:
(234)10  (234)8 , infatti...
(234)8 = 282 + 381 + 480 = 264 + 38 + 4 = 128+24+4 = (156)10
Osservazione: più piccola è la base, minore è il valore del numero
rappresentato dalla stessa sequenza di cifre
Fondamenti di Informatica I  a.a. 2008-09
78
Esempi  2
La notazione posizionale si applica anche per il calcolo del valore
dei numeri frazionari, infatti...
(0,872)10 = 8101 + 7102 + 2103
= 8/10 + 7/100 + 2/1000 = 0,8 + 0,07 + 0,002
Quante cifre occorreranno per rappresentare il numero decimale 36
in base 2? Sappiamo che con n cifre si rappresentano i numeri da 0
a 2n1, quindi...
per
per
per
per
per
per
n=1 (con una cifra) si rappresentano 0...211  0,1
n=2: 0...221  0...3
Effettivamente possiamo verificare che
3
n=3: 0...2 1  0...7
(100100)2=(36)10, infatti...
n=4: 0...241  0...15
100100=125+024+023+122+021+020
n=5: 0...251  0...31
= 32 + 4 = 36
n=6: 0...261  0...63
con 6 cifre necessarie per la codifica
del numero in base 2
Fondamenti di Informatica I  a.a. 2008-09
79
Esempi  3
Quesito: Per quale base B risulterà vera l’uguaglianza
17 + 41 + 22 = 102 ?
Se i numeri sono rappresentati in base B, sappiamo che:
(17)B = 1B1+7B0 = B+7
(41)B = 4B1+1B0 = 4B+1
(22)B = 2B1+2B0 = 2B+2
(102)B = 1B2+0B1+2B0 = B2+2
da cui...
B+7+4B+1+2B+2 = 7B+10 = B2+2
 Si ottiene un’equazione di 2° grado: B2  7B  8 = 0
Risolvendo:  = 49+32 = 81
(7+9)/2 = 8
È la soluzione!
B = (7   )/2 =
(79)/2 = 1
Fondamenti di Informatica I  a.a. 2008-09
Non può essere
una base
80
La rappresentazione dei dati
e l’aritmetica degli elaboratori
Fondamenti di Informatica I  a.a. 2008-09
81
Numeri interi positivi
I numeri interi positivi sono rappresentati all’interno
dell’elaboratore utilizzando un multiplo del byte
(generalmente 4/8 byte)
Se l’intero si rappresenta con un numero di cifre
minore, vengono aggiunti zeri nelle cifre più
significative
Esempio: 12 viene rappresentato in un byte come…
00001100
Fondamenti di Informatica I  a.a. 2008-09
82
Numeri con segno
Per rappresentare numeri con segno, occorre utilizzare
un bit per definire il segno del numero
Si possono usare tre tecniche di codifica



Fondamenti di Informatica I  a.a. 2008-09
Modulo e segno
Complemento a 2
Complemento a 1
83
Modulo e segno
Il bit più significativo rappresenta il segno: 0 per i numeri
positivi, 1 per quelli negativi
Esiste uno zero positivo (00…0) e uno zero negativo (10…0)
Se si utilizzano n bit si rappresentano tutti i numeri compresi
fra (2n11) e 2n11
Esempio: con 4 bit si rappresentano i numeri fra 7 ((231)) e 7 (231)
Fondamenti di Informatica I  a.a. 2008-09
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
positivi
1000 0
1001 1
1010 2
1011 3
1100 4
1101 5
1110 6
1111 7
negativi
84
Complemento a 2
Il complemento a 2 di un numero binario (N)2 a n cifre è il numero
{
2n(N)2 = 10……0(N)2
Il complemento a 2 si calcola…
n
Effettuando il complemento a 1 del numero di partenza (negazione di
ogni cifra): si trasforma ogni 0 in 1 e ogni 1 in 0
Aggiungendo 1 al numero ottenuto
Oppure: a partire da destra, lasciando invariate tutte le cifre fino al
primo 1 compreso, quindi invertendo il valore delle rimanenti
01010111
10101000
10101001
complemento a 1
1
Fondamenti di Informatica I  a.a. 2008-09
100000000
011111111
01010111
10101000
10101001
28
281
N
281N
281N1
85
Interi in complemento a 2
I numeri positivi sono rappresentati (come) in modulo e segno
I numeri negativi sono rappresentati in complemento a 2  la cifra
più significativa ha sempre valore 1
Lo zero è rappresentato come numero positivo (con una sequenza
di n zeri)
Il campo dei numeri rappresentabili varia da 2n1 a 2n11
Esempio: numeri a 4 cifre
0000
0001
0010
0011
0100
0101
0110
0111
Fondamenti di Informatica I  a.a. 2008-09
0
1
2
3
4
5
6
7
1000
1001
1010
1011
1100
1101
1110
1111
8
7
6
5
4
3
2
1
Nota: 0111 7
1000 8
86
Interi a 16 bit
Numeri interi rappresentati su 16 bit in complemento a 2:
Il numero intero positivo più grande è 2151=(32767)10
0111 1111 1111 1111
0x 7
F
F
F
Il numero intero negativo più piccolo è 215=(32768)10
1000 0000 0000 0000
0x 8
0
0
0
0111 1111 1111 1111 +
1
1000 0000 0000 0000
Il numero intero –1 è rappresentato come
1111 1111 1111 1111
0x F
F
F
F
Fondamenti di Informatica I  a.a. 2008-09
0000 0000 0000 0000 +
1
0000 0000 0000 0001
87
Addizione binaria
Le regole per l’addizione di due bit sono
0
0
1
1
+
+
+
+
0
1
0
1




0
1
1
0 con riporto di 1
L’ultima regola è… (1)2(1)2  (10)2 … (112)10 !!
Esempio
Fondamenti di Informatica I  a.a. 2008-09
riporti
1 11 1
01011011+
01011010
10110101
91+
90
181
88
Sottrazione binaria  1
Le regole per la sottrazione di due bit sono
00
10
11
10  1
0
1
0
 1 con prestito di 1 dalla cifra precedente a sinistra
Esempio
0 10
11001
101
10100
25 
5
20
La sottrazione può divenire complicata: quando si ha
una richiesta (di un prestito) sulla cifra precedente a
sinistra, che è uno 0, l’operazione si propaga a sinistra
fino alla prima cifra ad 1 del sottraendo
Fondamenti di Informatica I  a.a. 2008-09
89
Sottrazione binaria – 2
Utilizzando la rappresentazione in complemento a 2,
addizione e sottrazione sono trattate come un’unica
operazione di somma algebrica
si trascura il bit n 1
{
N1N2 = N1(2nN2)2n
complemento a 2 di N2: rappresentazione di (N2)
 Si calcola il complemento a 2 di N2
 Si somma N1 con il complemento a 2 di N2
 Si trascura il bit più significativo del risultato
Esempio: (010001)2(000101)2 = (17)10(5)10
010001 
111011
1001100
Fondamenti di Informatica I  a.a. 2008-09
(12)10
90
Rappresentazioni in complemento
Sono utili perché l’operazione di somma algebrica può
essere realizzata non curandosi del bit di segno
In complemento a 1 (più semplice da calcolare)…
Zero ha due rappresentazioni: 00000000 e 11111111
La somma bit a bit funziona “quasi sempre”
00110 
(6)
10101 =
11011
(10)
(4)
11001 
11010 =
10011
(6)
(5)
(12)
In complemento a 2…
Zero ha una sola rappresentazione
La somma bit a bit funziona sempre
Fondamenti di Informatica I  a.a. 2008-09
91
Overflow
L’overflow si ha quando il risultato di un’operazione non
è rappresentabile correttamente con n bit
Esempio: 5 bit
14 
10
24
 [16,15]
01110 
01010
11000
8
8 
10
18
11000 
10110
101110 14
Per evitare l’overflow occorre aumentare il numero di
bit utilizzati per rappresentare gli operandi
C’è overflow se c’è riporto al di fuori del bit di segno e
non sul bit di segno, o se c’è riporto sul bit di segno,
ma non al di fuori
Punteggio nei vecchi videogame… sorpresa per i campioni!
0111 1111 1111 1111  1 = 1000 0000 0000 0000
32767
1=
32768
Fondamenti di Informatica I  a.a. 2008-09
92
Moltiplicazione binaria
Le regole per la moltiplicazione di due bit sono
0
0
1
1
Esempio




0
1
0
1




0
0
0
1
1100111 x 101
1100111
0000000
1100111
1000000011
Moltiplicare per 2n corrisponde ad aggiungere n zeri in
coda al moltiplicando
51
110011 x 10000  1100110000
 16  24
Fondamenti di Informatica I  a.a. 2008-09
816
93
Divisione binaria
(
La divisione binaria di A per B viene calcolata in modo
analogo alla divisione decimale, così da ottenere un
quoziente Q ed un resto R, tali che A  BQ  R
La divisione binaria si compone di una serie di sottrazioni
110^
1^
1^
0
101
101
111
1010
54  510 + 4
1 01
1 00
Dividere per 2n equivale a scorrere il numero a destra di
n posizioni; le cifre scartate costituiscono il resto
110011  10000  11 con resto 11
Fondamenti di Informatica I  a.a. 2008-09
51:16  3 con resto 3
94
Esempio
Quesito: Data una base B, si consideri il numero
x(C5C4C3C2C1C0)B, dove le singole cifre valgono:
C5 = B1, C4 = B1, C3 = B1, C2 = 0, C1 = 0, C0 = 0
Qual è la rappresentazione in base B del risultato
dell’espressione (x/B3)1?
Dividere per B3, che per qualsiasi base si rappresenta
come 1000, equivale a “shiftare” il numero di tre cifre a
sinistra
 Rimangono quindi le tre cifre più significative, tutte
uguali a B1
 Sommando 1, a causa dei riporti, si ottiene quindi
come risultato dell’espressione 1000B3, qualsiasi sia il
valore della base B
Fondamenti di Informatica I  a.a. 2008-09
95
Esercizi
Esercizio 1
Assumendo che un elaboratore rappresenti i numeri interi con
segno su quattro bit in complemento a 2, si calcolino entrambi i
membri della seguente identità:
(AC)B = (AB)C,
con A=7, B=5, C=7. Si ottiene lo stesso risultato dal calcolo dei
due membri? Discutere le motivazioni della risposta.
Esercizio 2
a)
b)
Si determini, se esiste, la base b di un sistema di numerazione
tale che
(842)b = (1202)10
Si determini, se esiste, la base b  16 di un sistema di
numerazione tale che
(725)b  (626)b = (224)10
Fondamenti di Informatica I  a.a. 2008-09
96
Numeri in virgola mobile
La rappresentazione dei numeri in virgola mobile è in
relazione con la notazione scientifica (es. 1.2102120)
La IEEE ha previsto uno standard per la rappresentazione
in virgola mobile
singola precisione
(32 bit  4 byte)
doppia precisione
(64 bit  8 byte)
quadrupla precisione (128 bit  16 byte)
Singola precisione
31
23 22
0
8 bit
Segno
Il valore è
Esponente
(o Caratteristica)
23 bit
Mantissa
(1)S 1.M2E127 se E0
(1)S 0.M2126 se E=0
Fondamenti di Informatica I  a.a. 2008-09
Eccesso: vale 2t11, se t è il numero di cifre
riservate alla caratteristica  rappresentazione
“interna” dell’esponente sempre positiva
97
Singola precisione
Il numero più grande rappresentabile è 2128(2223)21296.811038
0 11111111 11111111111111111111111
2255127
1.111111111111111111111111
Il più piccolo numero positivo è 212622321491.41045
0 00000000 00000000000000000000001
2126
0.00000000000000000000001
In totale si rappresentano 232 numeri distinti, metà positivi, metà
negativi
Circa metà dei numeri sono compresi fra 1 e 1 (E127<0)
223 valori 223 valori
0
0.5
223 valori
1
Fondamenti di Informatica I  a.a. 2008-09
223 valori
2
4
98
L’aritmetica floatingpoint: addizione
Metodo per il calcolo dell’addizione
1.
2.
3.
Se le caratteristiche dei numeri sono diverse, si considera il
numero con caratteristica minore e…
1.1 Si trasla la mantissa di un posto a destra
1.2 Si incrementa la caratteristica di 1, fino a quando le due
caratteristiche sono uguali, e corrispondono alla
caratteristica del risultato
La mantissa del risultato è ottenuta dalla somma delle due
mantisse
Se l’addizione comporta un riporto oltre la cifra più
significativa, si trasla la mantissa del risultato a destra di un
posto, il riporto nel bit più significativo, e si incrementa la
caratteristica di 1
Fondamenti di Informatica I  a.a. 2008-09
99
Un esempio di addizione
Supponiamo che per la rappresentazione floating–point vengano utilizzati
otto bit, di cui uno per il segno, tre per la caratteristica e quattro per la
mantissa
3.25
0 1 1 0 1 1 0 1
s
E4
N = (1) 0.M2
1.125
1 0 0 1
0 1 0 1
La caratteristica del secondo operando è più piccola di una unità, quindi la
mantissa deve scorrere di una posizione a destra
1001  0100
La caratteristica del risultato è 110 e la mantissa è 1101+ 0100 = 10001;
la caratteristica deve essere aumentata di 1 e portata a 111, e la mantissa
del risultato traslata a destra di una posizione:
0
1
1
1
1
0
Fondamenti di Informatica I  a.a. 2008-09
0
0
Codifica il numero 4 (dato che la
caratteristica si rappresenta in eccesso
a 4), ma il risultato corretto è 4.375:
errore di troncamento
100
L’aritmetica floatingpoint: moltiplicazione
Metodo per il calcolo della moltiplicazione
1.
2.
3.
4.
5.
Si moltiplicano le due mantisse
Si addizionano le due caratteristiche
Si trasla a sinistra il prodotto delle due mantisse fino ad
ottenere un 1 come cifra più significativa; si diminuisce la
caratteristica di 1 per ogni traslazione eseguita
Si tronca la mantissa al numero di bit utilizzati nella
rappresentazione; la mantissa del prodotto è il risultato del
troncamento
Si sottrae l’eccesso alla somma delle caratteristiche,
ottenendo la caratteristica del prodotto
Fondamenti di Informatica I  a.a. 2008-09
101
Un esempio di moltiplicazione
Supponiamo che per la rappresentazione floating–point vengano utilizzati
otto bit, di cui uno per il segno, tre per la caratteristica e quattro per la
mantissa
0.203125
0 0 1 0 1 1 0 1
N = (1)s0.M2E4
1.125
1 0 0 1
0 1 0 1
Moltiplicando le mantisse e sommando le caratteristiche si ottiene:
M=01110101
E=111
La mantissa del risultato deve essere traslata di un posto a sinistra, e la
somma delle caratteristiche deve essere decrementata di 1; infine la
mantissa deve essere troncata alle 4 cifre significative e l’eccesso (100)
sottratto alla caratteristica:
0
0
1
0
1
Fondamenti di Informatica I  a.a. 2008-09
1
1
0
Codifica il numero 0.21875, ma il risultato
corretto
è
0.228515625:
errore
di
troncamento
102
L’aritmetica degli elaboratori  1
L’aritmetica “interna” degli elaboratori differisce
notevolmente dall’aritmetica classica
Sebbene le stesse operazioni possano essere realizzate
secondo modalità diverse su elaboratori diversi, si
riscontrano alcune caratteristiche comuni:
Rappresentazione binaria dei numeri
Rango finito dei numeri rappresentabili
Precisione finita dei numeri
Operazioni espresse in termini di operazioni più semplici
Fondamenti di Informatica I  a.a. 2008-09
103
L’aritmetica degli elaboratori  2
Rango finito dei numeri rappresentabili
Qualunque sia la codifica utilizzata, esistono sempre il più
grande ed il più piccolo numero rappresentabile
I limiti inferiore e superiore del rango di rappresentazione
dipendono sia dal tipo di codifica, sia dal numero di bit
utilizzati
Se il risultato di un’operazione non appartiene al rango
dei numeri rappresentabili, si dice che si è verificato un
overflow (un underflow, più precisamente, se il risultato è
più piccolo del più piccolo numero rappresentabile)
Fondamenti di Informatica I  a.a. 2008-09
104
L’aritmetica degli elaboratori  3
Precisione finita dei numeri
La precisione della rappresentazione di un numero
frazionario è una misura di quanto essa corrisponda al
numero che deve essere rappresentato
Negli elaboratori, i numeri frazionari sono rappresentati in
virgola mobile (floating–point), utilizzando un numero
finito di bit
È plausibile che un numero reale non ammetta una
rappresentazione finita, quindi dovrà essere codificato in
maniera approssimata
Negli elaboratori si rappresentano soltanto numeri
razionali (fino ad una data precisione)
Fondamenti di Informatica I  a.a. 2008-09
105
L’aritmetica degli elaboratori  4
Operazioni espresse in termini di operazioni più semplici
La maggior parte degli elaboratori non possiede circuiti in
grado di eseguire direttamente tutte le operazioni:
La sottrazione si realizza per mezzo di una complementazione e di
un’addizione
La moltiplicazione si realizza per mezzo di una successione di
addizioni e di shift (traslazioni)
La divisione si realizza per mezzo di una successione di shift e
sottrazioni
Le operazioni più semplici sono eseguite direttamente da
appositi circuiti (in hardware); le operazioni più complesse
sono realizzate mediante l’esecuzione di successioni di
operazioni più semplici, sotto il controllo di programmi
appositamente realizzati, e generalmente memorizzati
permanentemente (in firmware)
Fondamenti di Informatica I  a.a. 2008-09
106
Codifica dei caratteri alfabetici – 1
Oltre ai numeri, molte applicazioni informatiche
elaborano caratteri (simboli)
Gli elaboratori elettronici trattano numeri
Si codificano i caratteri e i simboli per mezzo di numeri
Per poter scambiare dati (testi) in modo corretto,
occorre definire uno standard di codifica
Fondamenti di Informatica I  a.a. 2008-09
A
01000001
3
00110011
$
00100100
107
Codifica dei caratteri alfabetici – 2
Quando si scambiano dati, deve essere noto il tipo di
codifica utilizzato
La codifica deve prevedere le lettere dell’alfabeto, le
cifre numeriche, i simboli, la punteggiatura, i caratteri
speciali per certe lingue (æ, ã, ë, è,…)
Lo standard di codifica più diffuso è il codice ASCII, per
American Standard Code for Information Interchange
Fondamenti di Informatica I  a.a. 2008-09
108
Codifica ASCII
Definisce una tabella di corrispondenza fra ciascun carattere
e un codice a 7 bit (128 caratteri)
I caratteri, in genere, sono rappresentati con 1 byte (8 bit); i
caratteri con il bit più significativo a 1 (quelli con codice dal
128 al 255) rappresentano un’estensione della codifica
La tabella comprende sia caratteri di controllo (codici da 0 a
31) che caratteri stampabili
I caratteri alfabetici/numerici hanno codici ordinati secondo
l’ordine alfabetico/numerico
0 48
1 49
…….
8 56
9 57
A 65
B 66
…….
Y 89
Z 90
a 97
b 98
…….
y 121
z 122
cifre
maiuscole
minuscole
Fondamenti di Informatica I  a.a. 2008-09
109
Caratteri di controllo ASCII
I caratteri di controllo (codice da 0 a 31) hanno funzioni speciali
Si ottengono o con tasti specifici o con una sequenza Ctrlcarattere
Ctrl
^@
^A
……
^G
^H
^I
^J
^K
^L
^M
……
^Z
^[
……
^_
Dec
0
1
…
7
8
9
10
11
12
13
…
26
27
…
31
Fondamenti di Informatica I  a.a. 2008-09
Hex
0
1
…
7
8
9
A
B
C
D
…
1A
1B
…
1F
Code
NULL
SOH
……
BEL
BS
HT
LF
VT
FF
CR
……
EOF
ESC
……
US
Nota
carattere nullo
partenza blocco
…………………
beep
backspace
tabulazione orizzontale
line feed (cambio linea)
tabulazione verticale
form feed (alim. carta)
carriage return (a capo)
……………………
fine file
escape
………
separatore di unità
110
Caratteri ASCII stampabili
Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
20
21
22
23
24
25
26
27
28
29
2A
2B
2C
2D
2E
2F
SPACE
!
”
#
$
%
&
’
(
)
*
+
,
.
/
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
30
31
32
33
34
35
36
37
38
39
3A
3B
3C
3D
3E
3F
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
40
41
42
43
44
45
46
47
48
49
4A
4B
4C
4D
4E
4F
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
50
51
52
53
54
55
56
57
58
59
5A
5B
5C
5D
5E
5F
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
60
61
62
63
64
65
66
67
68
69
6A
6B
6C
6D
6E
6F
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
70
71
72
73
74
75
76
77
78
79
7A
7B
7C
7D
7E
7F
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
DEL
Nota: il valore numerico di una cifra può essere calcolato come differenza del
suo codice ASCII rispetto al codice ASCII della cifra 0 (es. ‘5’‘0’  5348  5)
Fondamenti di Informatica I  a.a. 2008-09
111
Tabella ASCII estesa
I codici oltre il 127 non sono compresi nello standard
originario
Fondamenti di Informatica I  a.a. 2008-09
112
Scarica

1 - iis augusto righi