Sei sulla pagina 1di 109

Fondamenti di Informatica I

Monica Bianchini
Dipartimento di Ingegneria dell’Informazione
ENIAC (1946 ca.)
E-mail: monica@dii.unisi.it

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
UNIVAC (1951)
da additivo a posizionale, da decimale a binario,
a esadecimale: l’alfabeto dell’elaboratore

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,


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,
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,
Enigma realizzata dai tedeschi per
codificare le comunicazioni militari
Red Purple,
Purple di costruzione giapponese
Computer Colossus,
Colossus costruito dagli inglesi
per la decifrazione dei messaggi tedeschi,
alla cui progettazione e realizzazione
collaborò Alan Turing,
Turing permise la vittoria
angloamericana sull’Atlantico La macchina Enigma

Fondamenti di Informatica I  a.a. 2008-09 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,
ENIAC Mark I) I
Il nome di Von Neumann è legato invece ai primi calcolatori a
programma memorizzato realizzati alla fine degli anni ‘40
(EDSAC,
EDSAC Whirlwind,
Whirlwind IAS,
IAS UNIVAC)
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) Mark I (1948) EDSAC (1949)

Whirlwind (1949) IAS (1952) UNIVAC (1952)

Fondamenti di Informatica I  a.a. 2008-09 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,
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) Portatile e Palmare (oggi)

Fondamenti di Informatica I  a.a. 2008-09 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,
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 rappresentazione e
dell’elaborazione dell’informazione
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,
digitale elettronica ed automatica capace di effettuare
trasformazioni sui dati:
Digitale:
Digitale i dati sono rappresentati mediante un alfabeto finito,
costituito da cifre (digit),
digit che ne permette il trattamento
mediante regole matematiche
Elettronica:
Elettronica realizzazione tramite tecnologie di tipo elettronico
Automatica:
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,
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:
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:
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:
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:
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
falso e vero)
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

Si definiscono delle operazioni fra i valori booleani:


AND,
AND OR,
OR NOT sono gli operatori fondamentali

0 1

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0  0 0 1
01  1 0+0 0+1
10  1 1 1
11  1
0 1
1+0 1+1

Fondamenti di Informatica I  a.a. 2008-09 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 0 0 0 1
01  0 00 01
10  0
11  1
1 0 1 1

10 11

Fondamenti di Informatica I  a.a. 2008-09 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
x
1
Date n variabili binarie indipendenti, la loro somma
logica (OR) è

1 se almeno una xi vale 1


x 1 + x 2 + …+ x n =
0 se x1= x2= …= xn = 0

Fondamenti di Informatica I  a.a. 2008-09 26


AND e NOT con variabili binarie

0 se almeno una xi vale 0


x 1  x 2  … x n =
1 se x1= x2= …= xn = 1

x=0 se x=1
x=1 se x=0

Fondamenti di Informatica I  a.a. 2008-09 27


Alcune identità

x + 1  1 x1x
x + 0  x x00
x + x  x xxx

x1  x
x 0 x 1
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 x1+x2  x2+x1 x 1 x 2  x 2 x 1
associativa x1+x2+x3  x1+(x2+x3) x1 x2 x3  x1(x2 x3)
distributiva del prodotto rispetto alla somma x1 x2 + x1 x3  x1(x2+x3)

Per l’operatore NOT si provano le seguenti identità:


x + x  1
x x  0
x  x

Fondamenti di Informatica I  a.a. 2008-09 29


Configurazioni delle variabili

Date n variabili binarie indipendenti x1, x2,…, xn, queste


possono assumere 2n configurazioni distinte
Ad esempio per n3 si hanno 8 configurazioni
x1x2x3 000 001 010 011
100 101 110 111
Una configurazione specifica è individuata univocamente
da un AND (a valore 1) di tutte le variabili, dove quelle
corrispondenti ai valori 0 compaiono negate

010 x1x2x3

Fondamenti di Informatica I  a.a. 2008-09 30


Funzioni logiche

Una variabile y è una funzione delle n variabili


indipendenti x1, x2,…, xn, se esiste un criterio che fa
corrispondere in modo univoco ad ognuna delle 2n
configurazioni delle xi un valore di y
y = F(x1,x2,…,xn)
Una rappresentazione esplicita di una funzione è la
tabella di verità,
verità in cui si elencano tutte le possibili
combinazioni di x1, x2, …, xn, con associato il valore di y
x1 x2 y
0 0
y = x1+x2 0
0 1
Fondamenti di Informatica I  a.a. 2008-09 1 31
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 Si può scrivere la funzione
0 0 0 0 come somma logica delle
0 0 1 0 configurazioni corrispondenti
0 1 0 0 agli 1
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 0

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 32
Fondamenti di Informatica I  a.a. 2008-09
Un esempio: lo XOR

x1 x2 XOR
0 0 0
0 1 1
1 0 1
1 1 0

XOR = x1x2 + x1x2

Fondamenti di Informatica I  a.a. 2008-09 33


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 B L A B L
0 0 0 0

A 1 1 A 1 1 A B L
B B
0 0 1
0 1 0
A=0 B=0 A=0 B=1 1 0 0
1 1 1
A B
L A B L
0 0 0 0
1 1 A 1 1
A B B L = ABAB

A=1 B=0 A=1 B=1

Fondamenti di Informatica I  a.a. 2008-09 34


Un esercizio
Progettare un circuito per accendere e spegnere una
lampada da uno qualsiasi di tre interruttori indipendenti
L = 0

0 0 0
1 1 1
Cambia lo A B C
stato di un 0 0 0
interruttore L = 1
qualsiasi
0 0 0
1 1 1

A B C
0 1 0
Fondamenti di Informatica I  a.a. 2008-09 35
Analisi delle combinazioni
Si considera cosa accade a partire dalla configurazione di partenza,
cambiando lo stato di un interruttore per volta
L = 1 L = 0
A B C A B C

0 0 1 0 1 1
L = 0 L = 1
L = 1 L = 0
A B C A B C
A B C A B C

0 0 0 0 1 0 1 1 1
1 0 1
L = 1 L = 0
A B C A B C

1 0 0 1 1 0

Fondamenti di Informatica I  a.a. 2008-09 36


Scrittura della funzione logica

A B C L
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 0
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1

L  ABC  ABC  ABC  ABC

Fondamenti di Informatica I  a.a. 2008-09 37


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 B C

A B C A B C

A B C A B C

B C B C

1 0 0 1 0 1
Fondamenti di Informatica I  a.a. 2008-09 38
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 a 2,
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. 39
Fondamenti di Informatica I  a.a. 2008-09
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 40


Sistemi di numerazione

Fondamenti di Informatica I  a.a. 2008-09 41


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 42


…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 43
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 44


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 45


I numeri in Mesopotamia  3

Fondamenti di Informatica I  a.a. 2008-09 46


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 47


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 48
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 49


I numeri nell’antico Egitto  3

=131.200

Fondamenti di Informatica I  a.a. 2008-09 50


I numeri nell’antico Egitto  4

Esempi di operazioni
Addizione:
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:
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 51


I numeri nell’antico Egitto  5

Esempio:
Esempio 713

13

=91

Fondamenti di Informatica I  a.a. 2008-09 52


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 53


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 54


I numeri nell’antica Grecia  3

Ad esempio:
= 67.766.776

Fondamenti di Informatica I  a.a. 2008-09 55


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 M
1 5 10 50 100 500 1000

Fondamenti di Informatica I  a.a. 2008-09 56


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 57
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,
Arabi si è diffuso in Europa

Fondamenti di Informatica I  a.a. 2008-09 58


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 59


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 60


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 61


Sistemi di numerazione posizionali

Sistemi di numerazione posizionali:


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:
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 62
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,


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 63


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:
Esempio base 10 00
01
02 102 = 100 valori
2 cifre: da 0 a 1021 = 99
….
98
99

Esempio:
Esempio base 2 00
01
2 cifre: da 0 a 221 = 3 10 22 = 4 valori
11

Fondamenti di Informatica I  a.a. 2008-09 64


Il sistema binario (B=2)

La base 2 è la più piccola per un sistema di numerazione

Cifre: 0 1  bit (binary digit)


digit
Forma
polinomia
Esempi:
Esempi
(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 65


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
……………. 28  256 valori distinti
11111110
11111111

È 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 66
Dal byte al kilobyte

24 = 16
28 = 256
216 = 65536

210 = 1024 (K=Kilo)


220 = 1048576 (M=Mega)
230 = 1073741824 (G=Giga)

1 KB = 210 byte = 1024 byte


1 MB = 220 byte = 1048576 byte
1 GB = 230 byte = 1073741824 byte
1 TB = 240 byte = 1099511627776 byte (Terabyte)

Fondamenti di Informatica I  a.a. 2008-09 67


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:
Esempio convertire in binario (43)10
43 : 2 = 21 +1 resti
21 : 2 = 10 +1
10 : 2 = 5 +0
5:2= 2 +1
2:2= 1 +0
1:2= 0 +1 bit più significativo

(43)10 = (101011)2

Fondamenti di Informatica I  a.a. 2008-09 68


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:
Esempio convertire in binario (0,21875)10 e (0,45)10
0,21875  2 = 0 ,4375 0,45  2 = 0,9
0,4375  2 = 0,875 0,90  2 = 1,8
0,875  2 = 1,75 0,80  2 = 1,6
0,75  2 = 1,5 0,60  2 = 1,2
0,5  2 = 1,0 0,20  2 = 0,4 etc.

(0,21875)10 = (0,00111)2 (0,45)10  (0,01110)2


Fondamenti di Informatica I  a.a. 2008-09 69
Da binario a decimale
Oltre all’espansione esplicita in potenze del 2  forma polinomia…
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:
Esempio convertire in decimale (101011)2
bit più significativo 1x2= 2 + 0
2x2= 4 + 1
5x2= 10 + 0
10 x 2 = 20 + 1
21 x 2 = 42 + 1 = 43
(101011)2 = (43)10
Fondamenti di Informatica I  a.a. 2008-09 70
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 è


A = (10)10 D = (13)10
B = (11)10 E = (14)10
C = (12)10 F = (15)10
Esempio:
Esempio
(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 71


Da binario a esadecimale

0 corrisponde a 4 bit a 0 0000 0 1000 8


0001 1 1001 9
0010 2 1010 A
0011 3 1011 B
0100 4 1100 C
0101 5 1101 D
0110 6 1110 E
0111 7 1111 F F corrisponde a 4 bit a 1

Fondamenti di Informatica I  a.a. 2008-09 72


Dai bit all’hex
Un numero binario di 4n bit corrisponde a un numero esadecimale di n cifre

Esempio:
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:
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 73


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
0x

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 74


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:
Osservazione più piccola è la base, minore è il valore del numero
rappresentato dalla stessa sequenza di cifre

Fondamenti di Informatica I  a.a. 2008-09 75


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 n=1 (con una cifra) si rappresentano 0...211  0,1
per n=2: 0...221  0...3 Effettivamente possiamo verificare che
per n=3: 0...231  0...7 (100100)2=(36)10, infatti...
per n=4: 0...241  0...15 100100=125+024+023+122+021+020
per n=5: 0...251  0...31
= 32 + 4 = 36
per n=6: 0...261  0...63
con 6 cifre necessarie per la codifica
Fondamenti di Informatica I  a.a. 2008-09 del numero in base 2 76
Esempi  3
Quesito:
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 Non può essere
una base
Fondamenti di Informatica I  a.a. 2008-09 77
La rappresentazione dei dati
e l’aritmetica degli elaboratori

Fondamenti di Informatica I  a.a. 2008-09 78


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:
Esempio 12 viene rappresentato in un byte come…
00001100

Fondamenti di Informatica I  a.a. 2008-09 79


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

 Modulo e segno
 Complemento a 2
 Complemento a 1

Fondamenti di Informatica I  a.a. 2008-09 80


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)
0000 0 1000 0
0001 1 1001 1
0010 2 1010 2
0011 3 1011 3
0100 4 1100 4
0101 5 1101 5
0110 6 1110 6
0111 7 1111 7
positivi negativi 81
Fondamenti di Informatica I  a.a. 2008-09
Complemento a 2

2n(N)2 = 10……0(N)2

{
n

100000000 28
01010111 011111111 281
complemento a 1 01010111 N
10101000
1 10101000 281N
10101001
10101001 281N1
Fondamenti di Informatica I  a.a. 2008-09 82
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 0 1000 8
0001 1 1001 7 Nota: 0111 7
0010 2 1010 6 1000 8
0011 3 1011 5
0100 4 1100 4
0101 5 1101 3
0110 6 1110 2
0111 7 1111 1
Fondamenti di Informatica I  a.a. 2008-09 83
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 0111 1111 1111 1111 +


0x 8 0 0 0 1
1000 0000 0000 0000

Il numero intero –1 è rappresentato come

1111 1111 1111 1111 0000 0000 0000 0000 +


0x F F F F 1
0000 0000 0000 0001

Fondamenti di Informatica I  a.a. 2008-09 84


Addizione binaria

0 + 0  0
0 + 1  1
1 + 0  1
1 + 1  0 con riporto di 1

Esempio
1 11 1 riporti
01011011+ 91+
01011010 90
10110101 181

Fondamenti di Informatica I  a.a. 2008-09 85


Sottrazione binaria  1
Le regole per la sottrazione di due bit sono
00  0
10  1
11  0
10  1  1 con prestito di 1 dalla cifra precedente a sinistra
Esempio 0 10
25 
11001
101 5
10100 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 86
Sottrazione binaria – 2
Utilizzando la rappresentazione in complemento a 2,
addizione e sottrazione sono trattate come un’unica
operazione di somma algebrica
N1N2 = N1(2nN2)2n si trascura il bit n 1

{
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 (12)10
Fondamenti di Informatica I  a.a. 2008-09 87
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) 11001  (6)
10101 = (10) 11010 = (5)
11011 (4) 10011 (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 88
Overflow

Esempio: 5 bit  [16,15]


14  01110  8  11000 
10 01010 10 10110
24 11000 8 18 101110 14

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 89
Moltiplicazione binaria

0  0  0
0  1  0
1  0  0
1  1  1
Esempio
1100111 x 101
1100111
0000000
1100111
1000000011

110011 x 10000  1100110000 816


51  16  24
Fondamenti di Informatica I  a.a. 2008-09 90
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 1010
54  510 + 4
111
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 51:16  3 con resto 3
Fondamenti di Informatica I  a.a. 2008-09 91
Esempio
Quesito:
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 92
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,
A=7 B=5,
B=5 C=7.
C=7 Si ottiene lo stesso risultato dal calcolo dei
due membri? Discutere le motivazioni della risposta.
Esercizio 2
a) Si determini, se esiste, la base b di un sistema di numerazione
tale che
(842)b = (1202)10
b) Si determini, se esiste, la base b  16 di un sistema di
numerazione tale che
(725)b  (626)b = (224)10 93
Fondamenti di Informatica I  a.a. 2008-09
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 23 bit

Segno Esponente Mantissa


(o Caratteristica)
Il valore è
Eccesso: vale 2t11, se t è il numero di cifre
(1)S 1.M2E127 se E0 riservate alla caratteristica  rappresentazione
(1)S 0.M2126 se E=0 “interna” dell’esponente sempre positiva

Fondamenti di Informatica I  a.a. 2008-09 94


Singola precisione

0 11111111 11111111111111111111111
2255127 1.111111111111111111111111

0 00000000 00000000000000000000001
2126 0.00000000000000000000001

223 valori 223 valori 223 valori 223 valori

0 0.5 1 2 4
Fondamenti di Informatica I  a.a. 2008-09 95
L’aritmetica floatingpoint: addizione

Metodo per il calcolo dell’addizione


1. 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

2. La mantissa del risultato è ottenuta dalla somma delle due


mantisse
3. 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 96


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
0 1 1 0 1 1 0 1 3.25
N = (1) 0.M2
s E4

0 1 0 1 1 0 0 1 1.125

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:
Codifica il numero 4 (dato che la
0 1 1 1 1 0 0 0 caratteristica si rappresenta in eccesso
a 4), ma il risultato corretto è 4.375:
errore di troncamento
Fondamenti di Informatica I  a.a. 2008-09 97
L’aritmetica floatingpoint: moltiplicazione

Metodo per il calcolo della moltiplicazione


1. Si moltiplicano le due mantisse
2. Si addizionano le due caratteristiche
3. 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
4. Si tronca la mantissa al numero di bit utilizzati nella
rappresentazione; la mantissa del prodotto è il risultato del
troncamento
5. Si sottrae l’eccesso alla somma delle caratteristiche,
ottenendo la caratteristica del prodotto

Fondamenti di Informatica I  a.a. 2008-09 98


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 0 1 0 1 1 0 1 0.203125
N = (1)s0.M2E4
0 1 0 1 1 0 0 1 1.125

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:
Codifica il numero 0.21875, ma il risultato
0 0 1 0 1 1 1 0 corretto è 0.228515625: errore di
troncamento

Fondamenti di Informatica I  a.a. 2008-09 99


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 100


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,
underflow più precisamente, se il risultato è
più piccolo del più piccolo numero rappresentabile)

Fondamenti di Informatica I  a.a. 2008-09 101


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),
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 102


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);
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)
firmware
Fondamenti di Informatica I  a.a. 2008-09 103
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

A 01000001

3 00110011

$ 00100100

Fondamenti di Informatica I  a.a. 2008-09 104


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,


ASCII per
American Standard Code for Information Interchange

Fondamenti di Informatica I  a.a. 2008-09 105


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 A 65 a 97
1 49 B 66 b 98
……. ……. …….
8 56 Y 89 y 121
9 57 Z 90 z 122
cifre maiuscole minuscole
Fondamenti di Informatica I  a.a. 2008-09 106
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 Dec Hex Code Nota
^@ 0 0 NULL carattere nullo
^A 1 1 SOH partenza blocco
…… … … …… …………………
^G 7 7 BEL beep
^H 8 8 BS backspace
^I 9 9 HT tabulazione orizzontale
^J 10 A LF line feed (cambio linea)
^K 11 B VT tabulazione verticale
^L 12 C FF form feed (alim. carta)
^M 13 D CR carriage return (a capo)
…… … … …… ……………………
^Z 26 1A EOF fine file
^[ 27 1B ESC escape
…… … … …… ………
^_ 31 1F US separatore di unità
Fondamenti di Informatica I  a.a. 2008-09 107
Caratteri ASCII stampabili
Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr Dec Hx Chr

32 20 SPACE 48 30 0 64 40 @ 80 50 P 96 60 ` 112 70 p
33 21 ! 49 31 1 65 41 A 81 51 Q 97 61 a 113 71 q
34 22 ” 50 32 2 66 42 B 82 52 R 98 62 b 114 72 r
35 23 # 51 33 3 67 43 C 83 53 S 99 63 c 115 73 s
36 24 $ 52 34 4 68 44 D 84 54 T 100 64 d 116 74 t
37 25 % 53 35 5 69 45 E 85 55 U 101 65 e 117 75 u
38 26 & 54 36 6 70 46 F 86 56 V 102 66 f 118 76 v
39 27 ’ 55 37 7 71 47 G 87 57 W 103 67 g 119 77 w
40 28 ( 56 38 8 72 48 H 88 58 X 104 68 h 120 78 x
41 29 ) 57 39 9 73 49 I 89 59 Y 105 69 i 121 79 y
42 2A * 58 3A : 74 4A J 90 5A Z 106 6A j 122 7A z
43 2B + 59 3B ; 75 4B K 91 5B [ 107 6B k 123 7B {
44 2C , 60 3C < 76 4C L 92 5C \ 108 6C l 124 7C |
45 2D - 61 3D = 77 4D M 93 5D ] 109 6D m 125 7D }
46 2E . 62 3E > 78 4E N 94 5E ^ 110 6E n 126 7E ~
47 2F / 63 3F ? 79 4F O 95 5F _ 111 6F o 127 7F DEL

Nota:
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 108


Tabella ASCII estesa
I codici oltre il 127 non sono compresi nello standard originario

Fondamenti di Informatica I  a.a. 2008-09 109

Potrebbero piacerti anche