Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
1
Rappresentazione dell’informazione (1)Dato un insieme di elementi di informazione I, la rappresentazione (o codifica) di ciascun elemento è una funzione:
f : I C Un codice dell'insieme C è una aggregazione di simboli di un insieme che costituisce l'alfabeto di supporto di C. La decodifica è una funzione che opera la trasformazione inversa:
g : C I. Definizione formale molto ampia, si presta ad applicazioni in ogni
campo Esempio: applicazioni in campo linguistico: La funzione di codifica di un certo insieme, per esempio, gli oggetti contenuti in una stanza o gli animali di una certa famiglia, può essere:
a) Il vocabolario italiano che fa corrispondere ad ogni elemento dell'insieme il suo codice (nome), formato utilizzando i 26 simboli dell'alfabeto delle lingue occidentali.
b) Il vocabolario della lingua russa che si appoggia invece all'alfabeto di supporto costituito dai caratteri cirillici.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
2
Rappresentazione dell’informazione (2)L'esempio è una codifica in chiaro. Per proteggere l'informazione si può ricorrere a codici cifrati. Giulio Cesare adottò per i suoi messaggi un codice che slittava di 3 posizioni ciascun carattere nell'elenco circolare dei 26 caratteri dell'alfabeto (a z segue a). Con questo codice la parola: "Zorro" diventa: "Cruur".
Una codifica può essere: non ambigua quando la funzione di codifica è iniettiva, cioè ad
elementi distinti in I corrispondono elementi distinti in C. non ridondante quando il numero di elementi di C è uguale a quello di I
(NC=NI); ridondante quando: NC>NI; ambigua quando: NC<NI. Altre importanti caratteristiche di un codifice sono: economicità (numero di simboli mediamente utilizzati per un elemento
di informazione); semplicità dell'operazione di codifica (e di decodifica); semplicità di trattamento dell'informazione codificata.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
3
Rappresentazione dei NUMERI NATURALI (1)
I N U M E R I N A T U R A L I s o n o i n u m e r i i n t e r i p o s i t i v i : 0 , 1 , 2 , 3 , 4 , 5 , 6 , … . . U n a p o s s i b i l e c o d i f i c a : l i n g u a i t a l i a n a D i f f i c o l t à : s o n o i n f i n i t i . E ' n e c e s s a r i o r i c o r r e r e a c o d i c i c o m p o s t i U n a r a p p r e n t a z i o n e c o m p a t t a : s i s t e m a d i n u m e r a z i o n e . Q u e l l o a d o t t a t o n o r m a l m e n t e è i l s i s t e m a d e c i m a l e p o s i z i o n a l e , b a s a t o s u l l e p o t e n z e c r e s c e n t i d e l 1 0 . A l f a b e t o c o n d i e c i s i m b o l i : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 . P o s i z i o n a l e : v a l o r e d i v e r s o ( p e s o ) a s e c o n d a d e l l a p o s i z i o n e . L a c i f r a a l l ' e s t r e m a d e s t r a , c i f r a m e n o s i g n i f i c a t i v a e s p r i m e l e u n i t à ( p e s o 1 0 0 ) , q u e l l a a d i a c e n t e a s i n i s t r a e s p r i m e l e d e c i n e ( p e s o 1 0 1 ) , l a s u c c e s s i v a e s p r i m e l e c e n t i n a i a ( p e s o 1 0 2 ) e c o s ì v i a , f i n o a l l a c i f r a a l l ' e s t r e m a s i n i s t r a d e t t a c i f r a p i ù s i g n i f i c a t i v a , c h e a v r à p e s o 1 0 n - 1 . I l n u m e r o n a t u r a l e , d u e c e n t o t r e n t a c i n q u e n e l s i s t e m a d i n u m e r a z i o n e d e c i m a l e s i s c r i v e 2 3 5 e d i l s u o v a l o r e è :
012 105103102
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
4
Rappresentazione dei NUMERI NATURALI (2)
Il codice unario (non posizionale) utilizza un solo simbolo. Se adottiamocome simbolo un tratto verticale: I , il numero naturale zero si scriverà: I , tresi scriverà: IIII , la codifica di ventitre richiederà 24 tratti verticali, mentre lasua codifica in decimale richiede due soli simboli il 2 e il 3.Il codice unario non è "economico".Tutti i codici numerici utilizzati sono posizionali ed hanno necessariamentebase b 2.Simbologia: N indica un numero naturale, a prescindere dalla sua rappresentazione, Nb indica un numero naturale rappresentato in base b, una sequenza di cifre senza pedice rappresenta un numero naturale espresso
in base 10 una sequenza di cifre con pedice b rappresenta un numero espresso in base
b 10.01221 ...... cccccN mmb
00
11
22
22
11 ........ bcbcbcbcbcN m
mm
m
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
5
Rappresentazione dei NUMERI NATURALI (3)
La formula (1) stabilisce una corrispondenza biunivoca tra i numerinaturali e la loro codifica in base b.Ciascun numero naturale ha un codice in base b ed uno solo ed aciascun codice in base b corrisponde un numero naturale ed uno solo.
E' ovvio che qualunque sia la base b la formula (1), calcolataadoperando l'aritmetica decimale, costituisce anche un metodo diconversione di un numero dalla base b in decimale.
Esiste una tecnica generale per convertire un numerodecimale in una altra base o da una certa base ad un'altra.
(1)01221 ...... cccccN mmb
1
0
m
i
ii bcN
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
6
Conversione di un codice in una diversa base
La tecnica è molto semplice ed intuitiva.
Se il numero è espresso in una base b1 e si vuole convertirlo inuna base b2, basta dividere, prima il numero e, poi, i successiviquozienti per la base b2 espressa nella base b1.Il codice del numero nella nuova base sarà formato dai resti delledivisioni successive presi ordinatamente dall'ultimo al primo.Il resto della prima divisione, cioè, costituirà la cifra menosignificativa, mentre quello dell'ultima la cifra più significativa. E'importante tenere presente che i resti sono sempre espressi nellabase di partenza e quindi è necessario convertirli nella base diarrivo.Le divisioni tra i due numeri nella stessa base vanno effettuateseguendo le regole della aritmetica corrispondente che è per tuttele basi analoga a quella decimale. Qualche difficoltà pratica nasceper basi superiori a 10.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
7
L’algoritmo di conversione decimale binario
n/2 resto64 0 b0
32 0 b1
16 0 b2
8 0 b3
4 0 b4
2 0 b5
1 1 b6
n/2 resto65 1 b0
32 0 b1
16 0 b2
8 0 b3
4 0 b4
2 0 b5
1 1 b6
n/2 resto98 0 b0
49 1 b1
24 0 b2
12 0 b3
6 0 b4
3 1 b5
1 1 b6
n/2 resto43 1 b0
21 1 b1
10 0 b2
5 1 b3
2 0 b4
1 1 b5
4310=1101012
6410=10000002 6510=10000012
9810=11000102
Si osservi che il resto delle divisioni successive è anche la parità del numero che si divide (0 pari 1 dispari)
Consiste nell’eseguire divisioni successive per 2 (la base) e trattenere il resto (0 o 1) che costituisce il bit i-mo a partire dal meno significativo (bit 0)
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
8
Esercizi sulla conversione da una base ad un’altra
• Convertire da base 2 a base 10:
0110011
10101100
1100110011
• Convertire in base 10 i seguenti numeri:
1022103
4312045
50367
198A12
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
9
LUNGHEZZA di un numero naturale (1)
La lunghezza di un numero naturale è il numero di cifre necessario per esprimerlo in una data base.Si può verificare facilmente che più piccola è la base e maggiore sarà il numero di cifre necessario per esprimere un certo numero.ad es. 10232 =1111111111
102310=1023102316=3FF
La lunghezza di un numero decresce al crescere della base di codifica. Di conseguenza il sistema di numerazione binario dal punto di vista della lunghezza di rappresentazione dei numeri naturali è la scelta peggiore possibile, certamente molto peggiore del sistema decimale.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
10
La lunghezza di un numero cresce al diminuire della base (2)
2 4 6 8 10 12 14 162
4
6
8
10
12
14
16
18
20
1000
10000
100000
1000000
basen
. o
f d
igits
Lunghezza del codice in funzione della base per i numeri, 1000-10000-100000-1000000
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2.0x1040
5
10
15b=2
b=3
b=8 b=10
b=16
Numero da rappresentare (0-20000)
n. D
i cifr
e
Lunghezza della rappresentazione in base b
lunghezza della rappresentazione in funzione della base 2-3-8-10-16
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
11
LUNGHEZZA di un numero naturale (3)Nel sistema di numerazione decimale il massimo numero esprimibilecon 3 cifre è 999 cioè: 103-1.Nel sistema binario con 8 cifre si esprime il numero
11111111Poiché 11111111+1=10000000=28=128 sarà 11111111=1272
In generale quindi con base b ed n bits si potrà esprimere al massimoil numero:
bn-1
La relazione inversa di questa ci dirà che la lunghezza del numero Nb
è:mb= logb (Nb) +1
Essendo la funzione logaritmo una funzione sempre crescente, si puòdire che la lunghezza cresce col numero in qualunque base.Queste relazioni sono illustrate dai diagrammi seguenti.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
12
LUNGHEZZA di un numero naturale (3)N. di bit necessari a codificare numeri naturali in base 2
(lunghezza dei numeri naturali in base 2
0 5 10 15 20 25 30 351
1.5
2
2.5
3
3.5
4
4.5
5n. di bit necessari a codificare un numero
n. da codificare
n. d
i bit
occo
rren
ti
n log2(n) N of bits Binary code1 0 1 [0 0 0 0 0 1]2 1 2 [0 0 0 0 1 0]3 1.585 2 [0 0 0 0 1 1]4 2 3 [0 0 0 1 0 0]5 2.322 3 [0 0 0 1 0 1]6 2.585 3 [0 0 0 1 1 0]7 2.807 3 [0 0 0 1 1 1]8 3 4 [0 0 1 0 0 0]9 3.17 4 [0 0 1 0 0 1]10 3.322 4 [0 0 1 0 1 0]11 3.459 4 [0 0 1 0 1 1]12 3.585 4 [0 0 1 1 0 0]13 3.7 4 [0 0 1 1 0 1]14 3.807 4 [0 0 1 1 1 0]15 3.907 4 [0 0 1 1 1 1]16 4 5 [0 1 0 0 0 0]17 4.087 5 [0 1 0 0 0 1]18 4.17 5 [0 1 0 0 1 0]19 4.248 5 [0 1 0 0 1 1]20 4.322 5 [0 1 0 1 0 0]21 4.392 5 [0 1 0 1 0 1]22 4.459 5 [0 1 0 1 1 0]23 4.524 5 [0 1 0 1 1 1]24 4.585 5 [0 1 1 0 0 0]25 4.644 5 [0 1 1 0 0 1]
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
13
Gestione di numeri binari di lunghezza fissa
L'economicità hardware del codice binario e la semplicità della suaaritmetica lo impongono nella realizzazione di qualsiasiapparecchiatura elettronica digitale. Questo è giustificato da problemi dirumore; distinguere tra due soli livelli di una grandezza fisica riduce almassimo la probabilità di errore.Gli elaboratori di informazione lavorano a numero fisso di cifrebinarie. Si è passati rapidamente da 8 a 16 a 32 bit ed ora siamo a 64 bitma il limite rimane.L'adozione di un numero fisso di cifre (parola macchina di lunghezzafissa) comporta che nella rappresentazione di numeri naturali moltopiù piccoli del massimo numero esprimibile con le cifre adisposizione, le cifre non utilizzate dovranno essere comunqueriempite con "0" (zeri non significativi) e se il risultato di una sommao una moltiplicazione supera il massimo numero esprimibile si avràun traboccamento di bit dal campo a disposizione (overflow).
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
14
Rappresentazione dei numeri interi
La rappresentazione dei numeri naturali (numeri interipositivi o nulli) sul piano pratico non apre molte prospettivedi calcolo, è necessario rappresentare almeno i numeri interi(positivi e negativi) per poter essere in grado di operaresomme algebriche.
Tra le infinite possibili rappresentazione dei numeri interiquelle di maggiore interesse sono: Rappresentazione con segno; Rappresentazione all'intervallo (in binario,
complemento a due)
Queste rappresentazioni si possono adottare con qualsiasibase sia pari che dispari perché le proprietà su cui si basanosono generali.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
15
Rappresentazione dei numeri interi con segno
Si riserva al simbolo del segno la posizione all'estrema sinistra, quella che corrisponderebbe alla cifra più significativa di un numero naturale. Di solito si associa al segno positivo il simbolo "0" ed a quello negativo "1". Con questa tecnica il campo numerico a disposizione, in una certa base b e con m cifre, è di bm-1-1 numeri positivi ed altrettanti negativi, oltre allo "0" che ha addirittura due rappresentazioni perché, ovviamente, ci sarà lo 0 positivo (tutti "0" con la cifra segno a "0") e quello negativo (tutti "0" con la cifra segno ad "1"). Se si adotta la notazione Ci
(m) per indicare le m cifre di una rappresentazione numerica i due "0" della rappresentazione con segno sono 0(m) e 1 0(m-1).
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
16
Rappresentazione dei numeri interi con segno (2)
In binario se si lavora con numeri di sole 3 cifre, i tre numeripositivi rappresentabili sono: 1: 0012 2: 0102 3: 0112;quelli negativi sono: -1: 1012 -2: 1102 -3: 1112.Le due rappresentazioni dello "zero" sono: 0002 1002.
Con questa rappresentazione le somme algebriche dipendono dal segno concorde o discorde dei due numeri
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
17
Rappresentazione dei numeri interi con segno (3)
Il principale problema di questa rappresentazione è che le somme algebriche vanno eseguite in modo diverso in dipendenza dal segno concorde o discorde dei due numeri.
ad es la somma m+n se m=5 ed n=-7 va eseguita facendo la sottrazione di m da -n e poi cambiando il segnose m=5 ed n=-3 occorre sottrarre -n da m e poi cambiare il segno
Quindi occorre disporre di un sommatore e di un sottrattore, scambiare tra di loro i moduli dei numeri e poi attribuire segni diversi a seconda dei casi. Tutte operazioni che richiedono decisioni logiche dipendenti dai dati in ingresso.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
18
Rappresentazione per complemento all’intervallo
Per ottenere la rappresentazione con segno negativo di un numero si sottrae,nell'aritmetica della base b, il numero dato, formato da m cifre, dalla baseelevata alla potenza m-esima.Con m cifre in base b si possono rappresentare i numeri compresi tra:
(-bm/2)+1 e (+bm/2)-1
Anche in questo caso conviene considerare l'ipotesi di base pari, vistoche lo sono tutte le basi che hanno un reale interesse, ma non è difficileadattare i risultati a basi dispari.
I numeri positivi sono rappresentati nell'intervallo [0, (bm/2)-1] e quellinegativi nell'intervallo [(-bm/2+1)-1] ottenendoli dalla formula: bm-N.
Si ha una sola rappresentazione dello "0", quella indicata con 0 (m).
Esiste una combinazione che per simmetria non si usa:
)1()0(2
mb
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
19
Rappresentazione per complemento all’intervallo
000
001
010
011100
101
110
1110
1
2
3
-1
-2
-3
La rappresentazione trae spunto dalle proprietà dell’overflow: invece di sottrarre un numero dall’altro si aggiunge, ruotando sempre in senso orario (utilizzando quindi solo somme), un numero tale da raggiungere il risultato giusto, a meno dell’overflow, quindi muovendosi sul cerchio in figura
(-4)
1-1=001-001=001+111=1000=0 a 3 bit
3-3=011-011=011+101=1000=0 a 3 bit
3-1=011-001=011+111=1010=2 a 3 bit
-1-2=111+110=1101=-3 a 3 bit
0-2=000+110=110 = -2 (qui non c’è overflow)
1+2=001+010=011=3 2 (qui non c’è overflow)
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
20
Rappresentazione per complemento all’intervallo (2)
000 0
001 1
002 2
…..
…..
498
499 499
500 -500
501
502
503
…..
…..
996
997 -3
998 -2
999 -1
n n
-n m = 1000-n
1000
1000
1000
n+m = 1000 = 0 (a 3 cifre)
+
-
Si rappresenta con il numero positivo
Si rappresenta con il numero positivo
base 10 – 3 cifre
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
21
Rappresentazione per complemento all’intervallo (3)
In base decimale, ad esempio, la rappresentazione del numero di 3 cifre237 col segno negativo:
- 237si ottiene dall'operazione decimale:
1000 - 237 = 763;per cui l'operazione:
463 - 237 = 226si trasforma in:
463 + 763 = 1 226 che, ignorando l'overflow (4a cifra), da il risultato atteso.
I numeri positivi vanno da 001 a 499, quelli negativi da 999 a 501 e lacombinazione non usata è 500 che, cominciando con 5, è negativo.
E' banale riscontrare che questa rappresentazione si può anche ottenere daquella della base diminuita aggiungendo un 1 dopo la complementazione.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
22
Rappresentazione binaria in complemento a due
In base binaria e con 3 sole cifre, i numeri positivi rappresentabilisono:
1, 2, 3che corrispondono alle combinazioni:
0012 0102 0112
lo zero è:000
i numeri negativi sono:- 1, - 2, - 3
e si rappresentano nella forma:1112 1102 1012.
La combinazione non usata è:1002
e corrisponde a - 4.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
23
Rappresentazione binaria in complemento a due (2)0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 -8 8=16-8
1001 -7 9=16-7
1010 -6 10=16-6
1011 -5 11=16-5
1100 -4 12=16-4
1101 -3 13=16-3
1110 -2 14=16-2
1111 -1 15=16-1
n>0 n
m<0 k = 8+m
1000
n+k = n+m+810 = n2+m2+10002 = n2+m2 (a 3 bit)
+
-
Si rappresenta con il numero positivo
Si rappresenta con il numero positivo
Se n ed m sono due numeri interi esprimibili a b bits, n+m è esprimibile a b+1 bits.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
24
Conclusioni
Le rappresentazioni dei numeri negativi ottenute attraversoun'operazione di complementazione consentono di effettuaresomme algebriche senza preventivo esame del segno delnumero, utilizzando sempre e solo un circuito sommatore.
La complementazione all'intervallo può essere eseguita cifraper cifra, aggiungendo poi 1. Nel caso binario lacomplementazione all'intervallo si riduce allacomplementazione del numero bit a bit.
Il principale vantaggio dell'aritmetica in complemento a duene ha fatto lo standard generalmente utilizzato nelle CPU
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
25
La codifica BCD (Binary Coded Decimal)
L'elettronica degli elaboratori è binaria, mentre la mente umana èabituata a ragionare in decimale. Per mettere d'accordo i due mondi, sononati i codici BCD, da Binary Coded Decimal.Si parla di codici, al plurale, perché possono essere infiniti, visto cheinfinite possono essere le codifiche binarie dei dieci simboli del sistemadecimale.Quando si parla di codice BCD senza specificare il tipo di codice binarioadottato ci si riferisce necessariamente a quello posizionale basato sullepotenze crescenti del 2, detto anche codice binario "puro" o"naturale" o, anche, 8 4 2 1 (1 2 4 8) con riferimento ai pesi dei 4 bitletti da quello più significativo (MSB) verso quello meno significativo(LSB) (o viceversa).Essendo 10 i simboli da codificare (da 0 a 9) sono necessari 4 bit che,come è noto, possono dar luogo a 16 combinazioni che in binario purocorrispondono ai numeri naturali da 0 a 15.Poiché le 6 combinazioni dal 10 al 15 non si usano, la codifica BCD èridondante.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
26
La codifica BCD (Binary Coded Decimal) (2)
Naturalmente, la codifica BCD viene usata solo in funzione diinterfaccia per rendere comprensibile ad operatori umani i risultatidi una elaborazione numerica binaria.La codifica BCD del numero è, infatti, una operazionepropedeutica alla sua visualizzazione su un display numericodecimale.I quattro bit di ciascuna cifra codificata BCD vengono inviati adun circuito di decodifica che provvederà a pilotare il visualizzatoredella cifra corrispondente.
E' opportuno sottolineare che, mentre la codifica binaria è il primopasso per approdare ad un sistema numerico che porta poiall'aritmetica binaria, non esiste una aritmetica BCD perchè inipotetiche operazioni aritmetiche su codici BCD bisognerebbeapplicare ai codici binari dei numeri da 0 a 9 l'aritmeticadecimale, che non gode certo della semplicità di quella binaria.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
27
NUMERI REALI in virgola fissa
La rappresentazione dei numeri reali in virgola fissa assegna h degli m bitdella parola (o del gruppo di parole) alla parte intera ed i rimanenti k =m - h bit alla parte frazionaria del numero.La virgola è collocata sempre dopo le prime h cifre, indipendentementedal loro valore. Se il numero da rappresentare è piccolo le cifresignificative saranno precedute da "0".
E' banale rendersi conto che il campo numerico rappresentabile in virgolafissa si riduce moltissimo perché il contributo della parte frazionaria (kcifre) aggiunge al massimo una unità al campo delle h cifre intere.Il peso delle cifre dopo la virgola sarà: b-1, b-2, b-3 ecc...
Se si ha a che fare con un sistema binario con una parola macchina a 32bit e si immagina di utilizzare 20 bit per la parte intera con segno e 12bit per quella frazionaria, i numeri rappresentabili sono quelli compresitra (-219+1 e +219-1) ed i 12 bit frazionari per definizione avranno unvalore globale non superiore ad una unità. Orientativamente 12 bit binaricorrispondono a poco più di 3 cifre significative decimali.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
28
NUMERI REALI in virgola fissa
Qualche esempio di rappresentazione di numeri in virgola fissa in base 2.510 = 1/2=0000.10002
.2510 = 1/4=0000.0100 2
.12510 = 1/8=0000.0010 2
.062510 = 1/16=0000.0001 2
1/310 = 0000.0101010101010 2 evidentemente periodico3.510 = 00011.10002
5.12510 = 00101.01002
17.562510 = 00010001.100102
26.187510 = 00011010.001102
125.94210 = 01111101.1111000100 2
5.941235,810 = 00000101.111100001111010011002
14.2310 = 00001110.001110101110000101002
125.942
1101.1111000100
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
29
Rappresentazione dei numeri in virgola mobile
Limitazione del numero di bit rende la rappresentazione in virgola fissadei numeri inadeguata, per calcoli complessi.Con parole di 64 bit si possono rappresentare numeri interi fino a 18cifre decimali. Ma gli elaboratori a 64 bit esistono oggi mentre certi tipi dicalcoli scientifici si fanno da decenni.Le soluzioni messe a punto per fare calcoli significativi con pochi bitpermettono di sfruttare meglio anche i molti bit di oggi.
La dizione "virgola mobile" è abbastanza esplicita, si è trovato il modo disvincolare la virgola da una posizione fissa nel numero.
Il metodo si rifà alla tecnica del calcolo esponenziale che è sempre statousato nei calcoli scientifici a mano tutte le volte che si aveva a che farecontemporaneamente con numeri molto piccoli e molto grandi.Es.: .234E-5 .984E9 .280E0
Il numero N in base b viene rappresentato come N = m be dove m èl'iniziale di mantissa (cifre significative) ed e quella di esponente.Ovviamente N è determinato quando sono noti m ed e.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
30
Rappresentazione dei numeri in virgola mobile (2)R a p p r e s e n t a z i o n e n o r m a l i z z a t a ; m e d e s o n o s c e l t i i n m o d o c h e m = 0 .
1 / b m 1L a m a n t i s s a h a s e m p r e l a s t r u t t u r a 0 , x y z . . . . I c a r a t t e r i " 0 , " p o s s o n o e s s e r eo m e s s i s e n z a p e r d i t a d ' i n f o r m a z i o n e .L a r a p p r e s e n t a z i o n e d i u n n u m e r o r e a l e p u ò e s s e r e l i m i t a t a a l l a c o p p i a d in u m e r i ( m , e ) . E s e m p i o : I l d e c i m a l e 4 6 3 , 7 5 s a r à : ( 4 6 3 7 5 , 3 )L a s u a r a p p r e s e n t a z i o n e n o r m a l i z z a t a è : 0 , 4 6 3 7 5 x 1 0 3 .
M a n t i s s a e d e s p o n e n t e d e b b o n o p o t e r a s s u m e r e s e g n o n e g a t i v o .
U n a p o s s i b i l e s o l u z i o n e : m a n t i s s a r a p p r e s e n t a t a c o n s e g n o e d e s p o n e n t ec o n c o m p l e m e n t o a l l ' i n t e r v a l l o .N ( b i n a r i o ) s i r a p p r e s e n t a : ( S ; m ; e ) , d o v e S è i l s e g n o d e l l a m a n t i s s a :
C o n 4 b i t p e r l a m a n t i s s a e 3 p e r l ' e s p o n e n t e , i l d e c i m a l e - 0 , 0 9 3 7 5 c h e i nb i n a r i o d i v e n t a : - 0 , 0 0 0 1 1 , s a r à r a p p r e s e n t a t o d a l l a t e r n a : ( 1 ; 1 1 0 0 2 ; 1 0 1 2 ) .c h e c o r r i s p o n d e a :
eS mN 2,0)1(
310122 275.0101100,0 2
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
31
Lo standard IEEEUna rappresentazione generalmente adottata a livello mondiale è quella proposta da:
"Institute of Electrical and Electronical Engineering" (IEEE).
Prevede quattro diversi formati per calcoli in singola o doppia precisione di tipo semplice ed esteso.
Formati semplici:
Il formato per la singola precisione: utilizza 32 bit in totale, 1 per il segno, 8 per l'esponente e 23 per la mantissa.
Quello per la doppia precisione: utilizza 64 bit di cui 1 per il segno, 11 per l'esponente e 52 per la mantissa.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
32
Rappresentazione in
virgola mobile
secondo lo standard
IEEE: l’intero range
NaN
0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 0 0 0 0 01 0 0 0 0 0 0 0 0 0 0 0 0 1
2-126
2-126
2-120
21
2127
0 0 0 0 0 0 0 0 0 0 0 0 0
e=0
e=1
e=254
1-1 0 0 0 0 0 0 0 0 0 0 0 0 0
1+
1 1 1 1 1 1 1 1 1 1 1 1 1 1
2128- 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2-126+
2-126-
2-126-230 0 0 0 0 0 0 0 0 0 0 0 1 1
0 1 1 1 1 1 1 1 1 1 1 1 1 1
e=255
e=255
n = (1/0+ 0.mantissa) 2esp
Diverso da 0
0 0 0 0 0 0 0 0 0 0 0 0 00
……………………………
…………………………… esp=e-127e=126e=127
e=128
25
24
1 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1……………………………
2-126
1 0 0 0 0 0 0 0 0 0 0 0 0 11
1 0 0 0 0 0 0 0 0 0 0 0 0 125
25(1+)= 25+ 2525(2- )=26-25 26
26
=2esp· = 2esp· 2-23
n cifra implicita mantissa
=2-23
24(2- )=25-24 25
26
………....
e=131
e=132
e=133
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
33
Rappresentazione in virgola mobilesecondo lo standard IEEE :esempi
Il numero decimale 1021 è rappresentato dalla tripla (S; m; e):
(0; 111 1111 0100 0000 0000 00002; 1000 10002). Il bit segno è 0 perché il numero è positivo. La rappresentazione binaria di 1021 è: 11 1111 11012 che,
normalizzato e scritto con 23 bit, da il secondo numero della terna moltiplicato per 29. Sono 9, infatti, le posizioni di cui è necessario spostare la virgola per la normalizzazione al formato
1,xyz ..... Il numero di bit da usare per l'esponente è 8 e quindi:
P = 2 E-1-1 = 2 7-1 = 127. L'esponente e si ricava invertendo la relazione di definizione della
costante di polarizzazione: e = e' + P = 9 + 127 = 136 che, convertito in binario, da l'esponente della terna.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
34
Operazioni in virgola mobile
La moltiplicazione fra due numeri N1 ed N2 rappresentati in virgola mobile dalle triple (S1; e1; m1) ed (S2; e2; m2) ha per risultato il numero rappresentato dalla tripla: (S; e; m) in cui: S = 0 se S1 = S2 oppure: S = 1 se S1 S2; e = e1 + e2; m = m1 x m2 Dopo l'operazione di solito è necessaria la normalizzazione del risultato La divisione si effettua con regole analoghe. L'addizione e la sottrazione sono più complesse perché prima di effettuarle bisogna rendere uguali gli esponenti. Durante questa operazione se i numeri sono uno molto grande ed uno molto piccolo, per effetto dello scorrimento delle mantisse per pareggiare gli esponenti, si possono perdere cifre significative.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
35
Codifica binaria di caratteri alfanumerici
I calcolatori, nonostante il nome italiano (in francese si chiamano "ordinatori") sono spesso utilizzati per manipolare informazioni non matematiche.
Tutto il mondo della moderna editoria si basa sull'uso di computer e, quindi, non ci può essere dubbio che il problema della codifica binaria dei caratteri alfanumerici sia un problema sentito.
Si parla di caratteri "alfanumerici" per sottolineare che in un testo possono essere presenti, oltre che caratteri alfabetici, anche numeri ed altro, come segni di punteggiatura, simboli particolari (£, &, @, .... ) accenti di vario tipo, ecc..
Lo standard ormai universalmente adottato per applicazioni a basso livello (solo testo "non formattato") è la codifica ASCII (da American Standard Code for Information Interchange).
Il codice utilizza le 128 combinazioni possibili di 7 bit, secondo le assegnazioni contenute nella seguente tabella.
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
36
Codice ASCII
Settembre 2002 IFTS2002 Acq. Dati Remoti: INFORMATICA
37
Sequenze di caratteri
Quando un sistema deve trasmettere, ad un altro che riceve, delle informazioni articolate che non corrispondono ad un singolo carattere o dato numerico, sorge il problema di come accompagnare le rappresentazioni di caratteri alfanumerici o dati numerici con le informazioni necessarie per una loro corretta interpretazione.
Se si trasmette una successione di caratteri che costituiscono una parola, l'unità ricevente deve avere anche questo elemento d'informazione.
Si può far precedere la sequenza di caratteri (stringa, dall'inglese "string") dall'informazione del numero di lettere che costituiscono la parola od inviare un carattere di controllo dopo l'ultima lettera. Queste "regole" sulla trasmissione delle informazione costituiscono la base dei cosiddetti "protocolli" di trasmissione. I protocolli più conservativi usano sia un "header" cioè un messaggio che precede il blocco di informazione che un "footer" cioè un messaggio che segue.