40
La Rappresentazione delle Informazioni

La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Embed Size (px)

Citation preview

Page 1: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

La Rappresentazionedelle Informazioni

Page 2: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione dei caratteri: la codifica ASCII

codice ASCII della lettera ‘A’

01000001Q W E R T Y

A S D F G H

tastiera

• La Codifica ASCII serve a codificare i caratteri alfanumerici.

• È un sistema di codifica dei caratteri a 7 bit.

• Estensione ad 8 bit per raddoppiare il numero di caratteri rappresentabili (extendedASCII). In questo caso sono codificati simboli speciali per i diversi alfabeti quali lettere greche, lettere accentate, etc.

Page 3: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

La Codifica ASCII: codifica tabellare

Come sequenza di codifiche ASCII la parola “CANE” sarà:01000011 01000001 01001110 01000101

Per la decodifica si decompone la sequenza di bit in byte e si determina il carattere corrispondente ad ogni byte.

Page 4: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

La Codifica Unicode

• E’ un sistema di codifica che assegna un numero (o meglio, una combinazione di bit) a ogni carattere in maniera indipendente dal programma, dalla piattaforma e dalla lingua (e dal suo sistema di scrittura).

• E’ compatibile col codice ASCII.

• Attualmente codifica i simboli di quasi tutti gli alfabeti moderni.

• Nato come codice a 16 bit (corrispondenti a 65536 caratteri diversi), per permettere la rappresentazione della totalità dei caratteri si basa su tre tipi di codifiche diverse: UTF-8 a 8 bit (1 byte), UTF-16 a 16 bit (word) e UTF-32 a 32 bit (double word).

Page 5: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione dei numeriConcetti da chiarire:

Cardinalità di un insiemeè il numero totale di elementi da rappresentare :

l’inseme P = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15} ha cardinalità |P| = 16

l’insieme Q = ha cardinalità |Q|= 4

Base della rappresentazione Gli esseri umani contano in base 10 (probabilmente deriva dal numero delle dita)I computer in base 2 (bit)

Quanti bit servono per memorizzare informazioni relative ai due insiemi?n = log2 ( | . | )

nQ= 2 corrispondenti a nP= 4 corrispondenti a …??? Abbiamo bisogno di un metodo di codifica piùefficiente di quello tabellare visto con i caratteri

* Per approfondimento è possibile consultarehttp://webuser.unicas.it/destefano/slides-fimc/3-rappresentazione-dell%27Informazione.pdf

Page 6: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione dei numeriTra i primi sistemi di numerazione abbiamo quello romano:

Cifre Sistema addizionale poco adatto per la rappresentazione di numeri molto grandiNon era rappresentato lo zeroOperazioni complesse

Base di numerazione arabaCifre: 0 1 2 3 4 5 6 7 8 9È una rappresentazione posizionalepossibile per la presenza dello zeroOperazioni più semplici

Esempio: 3201 = (3x103) + (2x102) + (0x101) + (1x100)

Page 7: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

In generale

Rappresentazione in base B B cifre0 1 2 … B-1

di = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } in base 10di = { 0, 1 } in base 2di = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } in base 16

Conversione verso la base decimale:

d31d30 ... d2d1d0 è un numero a 32 cifre

valore = d31x B31 + d30 x B30 + ... + d2 x B2 + d1 x B1 + d0 x B0

Page 8: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Esempio di conversione in base 10da B=2 :

cifre: 0 11011010 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x1 = 64 + 16 + 8 + 2 = 90 7 cifre binarie 2 cifre decimali

da B=16 :cifre: 0 1 2 3 4 5 6 7 8 9 A B C D E F524 5x162 + 2x16 + 4x1 = 13163 cifre esadecimali 4 cifre decimali

Page 9: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Conversione esadecimale-binarioSiccome 16=24, il passaggio tra le rappresentazioni in base 2 e in base 16 è molto semplice: base

10 16 200 0 000001 1 000102 2 001003 3 001104 4 010005 5 010106 6 011007 7 011108 8 100009 9 100110 A 101011 B 101112 C 110013 D 110114 E 111015 F 1111

3F916

0011 1111 1001

1111111001

Page 10: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Quale base usare ?

Decimalenaturale per gli esseri umani.

Esadecimaleutile (agli esseri umani) per esaminare lunghe stringhe di bit

Binariarappresentazione ottimale per il calcolatore

… perché non usare una codifica binaria della rappresentazione in base 10 ?

Page 11: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Conversione base 10 base 2 (interi)Come ottenere la rappresentazione in base 2 di un numero intero T rappresentato in base 10 ?Non si conoscono né le cifre né il numero di cifre. Si divide il numero per la base e si prende il resto in ordine inverso.

Es.:43/2 = 21 con resto 121/2 = 10 con resto 1 4310 = 1010112

10/2 = 5 con resto 05/2 = 2 con resto 12/2 = 1 resto 01

Page 12: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Aritmetica in base 2Le operazioni aritmetiche si svolgono in maniera analoga a quanto si fa in base 10.

+ 0 1

0 0 1

1 1 10

* 0 1

0 0 0

1 0 1 “tavola pitagorica”in base 2

Page 13: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Aritmetica in base 21 1

1 1 1 +

1 1 0 =

1 1 0 1

5 x

3

15

1 0 1 x

1 1 =

1 0 1

1 0 1

1 1 1 1

7 +

6

13

1 0 1 x

1 0 =

1 0 1 0

5 x

2

10 Schift a sinistra di una posizione!

Page 14: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Aritmetica dei registri

I registri di memoria sono supporti di lunghezza finitaCiò impone delle restrizioni all’insieme di numeri rappresentabili e di conseguenza, dei vincoli all’aritmeticaRegistro a N bit 2N valori diversi rappresentabili

Es.: 8 bit 256 valori possibile rappresentare l’intervallo [0,255]

1 2 3 ................. N

Page 15: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Aritmetica dei registriNon ci sono problemi nel caso in cui l’operazione produce un risultato rappresentabile nel registro

0 1 1 0 1 1 0 1 +

1 0 0 0 1 0 0 1 =

1 1 1 1 0 1 1 0

1 0 9 +

1 3 7 =

2 4 6

Page 16: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Aritmetica dei registriSe l’operazione fornisce un risultato R non rappresentabile, si produce un riporto uscente dal registro, mentre all’interno rimane solo una parte della rappresentazione del risultato (ossia R mod 2N)

1 1 1 0 1 1 0 1 +

1 0 0 0 1 0 0 1 =

1 0 1 1 1 0 1 1 0

2 3 7 +

1 3 7 =

3 7 41 1 8

* Operazione di modulo consiste nel calcolare il resto della divisione tra due numeri: A mod b = A - parte_intera( A div b) x b.

Es. 15 mod 7 = 15 – 2 x 7 = 1 dove parte_intera(15/7)= parte_intera(2,14) = 2

Page 17: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione dei numeri negativiDobbiamo tener conto del segno del numero.La soluzione più immediata è quella di utilizzare un bit del registro come segno del numero. I restanti bit costituiscono il numero in valore assoluto.

L’intervallo di rappresentazione è [-2N-1+1, +2N-1-1].La posizione del bit di segno diventa di notevole importanza. Con questa rappresentazione si ha un’ambiguità nello 0. Lo zero può essere rappresentato sia dalla stringa tutti zero sia dalla stringa uno (come bit di segno) seguito da tutti zero.Le operazioni diventano alquanto complicate. Somma e sottrazione sono operazioni nettamente diverse.

Possibile convenzione:

0 + 1 -+/- modulo

Page 18: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione in complemento alla baseComplementi alla base: i numeri aventi segno negativo sono rappresentati come complemento a 2 del numero rappresentato, ossia:

La rappresentazione di un numero x nell’intervallo [0,2N] è

x se x>= 0RappB(x) =

2N-x se x<0

o anche per le proprietà della rappresentazione su un registro lungo N: Rapp(x)=(x+2N) mod 2N.

Il bit più significativo è indicativo del segno (“bit di segno”). In questo caso il valore 1 rappresenta il segno negativo.

L’intervallo di numeri rappresentati [-2N-1,+2N-1-1], asimmetrico. Risolve l’ambiguità dello zero che viene rappresentato dalla stringa tutti zero mentre la stringa 1 e tutti zero ora rappresenta il -1.

Page 19: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Calcolo rapido del complemento alla basePer ottenere rapidamente la rappresentazione in complemento alla base di un numero negativo su N bit

si estrae la rappresentazione del valore assoluto del numero su N bitsi complementano le cifre ad una ad unasi aggiunge 1

Es.: complemento alla base su 8 bit di -333310 =00100001 11011110+1=11011111

Si passa cioè dalla rappresentazione per complementi alla base diminuiti che corrisponde al complementamento ad 1 bit. Più rigorosamente la rappresentazione per complementi alla base diminuiti è:

x se x>= 0RappBD(x) =

(2N-1) - x se x<0

Page 20: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Operazioni in complemento alla baseVantaggio dei complementi è che le operazioni di somma e differenza si realizzano eseguendo sempre delle somme:Le addizioni si realizzano direttamente sulle rappresentazioni in quanto Rapp(x+y)= Rapp(x)+Rapp(y)Anche le sottrazioni si valutano tramite addizioni, ponendo x-y come x+(-y); di conseguenza

R(x-y)=R(x)+R(-y)Nel caso in cui l’operazione produce un numero al di fuori dell’intervallo di rappresentazione si ha un overflow.

Page 21: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Operazioni in complemento alla base

+4 0100 +4 0100

+2 + 0010 -2 +1110

+6 0|0110 +2 1|0010

-4 1100 +5 0101 -6 1010

-2 + 1110 +4 +0100 -3 +1101

-6 1|1010 -7 0|1001 +7 1|0111

overflow

Page 22: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione per eccessi

Un altro metodo per la rappresentazione dei numeri interi è la rappresentazione per eccessi. In generale nella rappresentazione per eccesso k il numero x viene rappresentato come RappE(x) = x+kPer un registro di N bit l’intervallo di valori da rappresentare viene diviso in 2 (2N/2 = 2N-1) la rappresentazione di un numero x nell’intervallo è data da

RappE(x) = x+2N-1

Anche in questo caso il bit più significativo è indicativo del segno ma questa volta lo zero rappresenta i numeri negativi.L’intervallo di numeri rappresentati è [-2N-1,+2N-1-1]. Lo 0 è rappresentato dalla stringa 1 e tutti 0.

00000 -1600001 -1500010 -1400011 -13

. .

. .01110 -201111 -110000 010001 +110010 +2

. .

. .11101 +1311110 +1411111 +15

Page 23: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Operazioni in eccessiLe addizioni si realizzano direttamente sulle rappresentazioni in quanto

RappE(x+y)=RappE (x)+RappE (y)

Anche le sottrazioni si valutano tramite addizioni, ponendo x-y come x+(-y);

RappE(x-y) = RappE(x) + RappE (-y)

ma dato che RappE(x)+RappE(y)=x+y+2N-1+2N-1

il risultato necessita di una correzione (sottraendo un 2N-1)

Nel caso in cui l’operazione produce un numero al di fuori dell’intervallo di rappresentazione si ha un overflow

Page 24: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Confronto tra complementi alla base ed eccessiEntrambe permettono di realizzare una sottrazione tramite addizione (macchine aritmetiche più semplici).

Le operazioni in eccessi richiedono un aggiustamento finale.

La rappresentazione in complementi rende più difficile il confronto.

Page 25: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione dei numeri realiLa rappresentazione dei numeri reali in base 2 è completamente analoga a quella in base 10:

Parte intera + parte frazionaria, separate da un punto

La parte frazionaria è formata da cifre che pesano le potenze di 2 a esponente negativo.

Esempio: 110.01012 2+2+2+1+2-2+2-4 = 6.3125

Conversione: si convertono separatamente la parte intera e quella frazionaria.

Esempio: 6.312510 610 = 1100.3125 x 2 = 0.6250 con parte intera 00.6250 x 2 = 1.2500 con parte intera 1 01010.2500 x 2 = 0.5000 con parte intera 00.5000 x 2 = 1.0000 con parte intera 1

Page 26: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione in virgola fissaSi assume prefissata la posizione del punto all’interno del registro (fixed point)

p = 4N = 8

Con questa convenzione, il valore x rappresentato nel registro è k*2-p, dove k è il valore che otterremmo se interpretassimo come un intero il contenuto del registro.Qual è l’insieme dei valori rappresentabili su un registro a N bit ?k: 0,1,2,…,2N-1 x: 0, 2-p, 2*2-p, …, (2N-1)*2-p

Esempio: N=8, p=4x = 0, 0.0625, 0.125, 0.1875,…, 15.9375I numeri sono rappresentati con una certa approssimazione (ricordiamo la quantizzazione uniforme: l’errore della rappresentazione equivale a metà intervallo)

Esempio: Tutti i valori compresi tra 0.03125 e 0.09375 sono rappresentati da 0.0625Tutti i valori compresi tra 0 e 0.03125 sono rappresentati da 0.0000 underflow

p N

Page 27: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Esempio di numero in virgola fissa

Supponiamo di voler rappresentare il numero 22.315 in virgola fissa in un registro ad 8 bit con p=3.Separiamo parte intera e parte frazionaria:2210 101102

0.31510 0.010100…2

1 0 1 1 0 0 1 0Posizione del punto p=3

Page 28: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Virgola fissa con segnoLa codifica dei numeri relativi in complementi alla base si applica in maniera immediata ai numeri reali rappresentati in virgola fissa.La rappresentazione di un numero reale con segno (N bit, punto in posizione p) si ottiene tramite la regola:

dove R(x) è la rappresentazione in virgola fissa di x

R(x) se x ≥ 0

bN-p- R(x) se x < 0

Page 29: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Virgola fissa con segno

Esempio (N=8, p=3):R(-3.7) = 25-R(3.7) 1 0 0 0 0 0 0 0 0 -

0 0 0 1 1 1 0 1

1 1 1 0 0 0 1 1R(-3.7)

Page 30: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Virgola fissa con segno

Possiamo comunque applicare il criterio già visto per ottenerevelocemente la rappresentazione in complementi alla base:

Per ottenere R(-3.7) si considera R(3.7) e si complementacifra per cifra aggiungendo 1 al bit meno significativo:

R(3.7)

1 1 1 0 0 0 1 0 +1

1 1 1 0 0 0 1 10 0 0 1 1 1 0 1

Page 31: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Precisione della virgola fissaL’errore massimo assoluto della rappresentazione si commette nel rappresentare il numero più piccolo diverso da 0, ed equivale al primo semi intervallo:

Errmax= 2-p/2per p=4 Errmax= 0.03125

Come fare per diminuire l’errore ?basta aumentare p…. In queto modo però si riduce il range dei numeri rappresentabili.Se al contrario si aumenta il range dei valori (N grande p piccolo) si riduce la precisione. Per migliorare globalmente la rappresentazione bisogna ridurre l’errore relativo

numeri enormi non hanno bisogno di una grande precisione, mentre numeri piccoli si.

Raggio della terra = 6378,388 Km (+/- 0.00001 mm)!!??!Raggio dell’atomo di idrogeno = 53 x 10-12m

0%

5%

10%

15%

20%

25%

30%

35%

40%

45%

50%

0 32 64 96 128 160 192 224 256

Rappresentazione

Erro

re re

lativ

o

Erel=Errmax/x

- 2-p/2 0 2-p/2

Page 32: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Vantaggi e svantaggi della virgola fissa

vantaggiSemplicità

Piena compatibilità con la rappresentazione degli interi epossibilità di usare circuiti aritmetici comuni.

svantaggi:Errore relativo elevato per x prossimi a zero

Compromesso range/precisione

Entrambi legati al fatto che il fattore di scala è fisso.

Page 33: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione in virgola mobileSi potrebbero mitigare i problemi andando a rappresentare esplicitamente il fattore di scala.

In questo modo la virgola non è più “fissa”, ma diventa “mobile”.

Fissata la base b, il valore viene considerato nella forma M*bE

(notazione scientifica) ed è rappresentato tramite la coppia (M,E)

Esempio: 22.315=0.22315*102 (0.22315,2)

10110.010=10.110010*23 (10.110010,11)

Nel registro saranno quindi prefissate zone diverse per la mantissa e per l’esponente.

Page 34: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione in virgola mobile

Solitamente M viene rappresentato come numero reale in virgola fissa e in segno e modulo mentre E si rappresenta come numero intero con segno per eccessi.

M è rappresentato su m bit con p cifre frazionarie M:

0, 2-p, 2*2-p, …, (2m-1)*2-p

mentre E è rappresentato su e bit E: -2e-1,…-1,0,1, …,+2e-1-1.

Gli estremi dell’intervallo, quindi, sono:

Nmin=Mmin*2Emin = 2-p*2- 2^(e-1)

Nmax=Mmax*2Emax = (2m-1)* 2-p*2+2^(e-1)-1

Page 35: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Esempio sulla virgola mobile

Rappresentazione in FP di –12.6:12.610 = 1100.10012 = 0.11001001 * 24

Segno: 1Mantissa: 0.11001001100110011001100Esponente: 4+128 = 13210 = 100001002

1 1 00 0 0 01 0 1 11 1 1 11 1 1 11 1 1 11 1 1 11 1 1 11

Page 36: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione normalizzata

Con la virgola mobile non la rappresentazione non è unica:

N = M*2E = (M*2)*2E-1 = (M*4)*2E-2 = (M/2)*2E+1

Il numero più piccolo rappresentabile viene modificato in funzione di p, posizione della virgola

Nmin= 2m-1*2-p*2- 2^(e-1)

Quale scegliere? Quella che ha la prima cifra della mantissa diversa da 0

rappresentazione normalizzata

Page 37: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione normalizzata

Esempio: N = 0.0003241892mantissa a 5 cifre decimali Diverse rappresentazioni possibili:0.00032*100

0.00324*10-1

0.03241*10-2

0.32418*10-3 normalizzata

Poiché in bit la prima cifra dopo la virgola è sempre 1 si decide di non rappresentarla per evitare la ridondanza ed avere a disposizione un bit in più.

Page 38: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Rappresentazione normalizzataValutiamo l’errore di approssimazione:

Errore assoluto massimo èErrmax = (2-p/2)*2E

Errore relativo: Erel = Errmax /x

Questa volta varia in funzione dell’esponente: l’errore commesso su numeri grandi èproporzionale a 2E mentre quello commesso nelle vicinanze dello zero è proporzionale a 2-E

ProPrecisione variabile a seconda del numero rappresentato: alta per numeri piccoli e bassa per numeri alti: 100+--0.5 ; 0.57 + - 0.005 ; 1017 +-1012

ControUnderflow più frequente nella rappresentazione normalizzataperché abbiamo fissato la rappresentazione del numero più piccolo a 1.0000000000…x 2-E

Per poter rappresentare con maggiore precisione i valori prossimi allo 0 la rappresentazione viene denormalizzata

Page 39: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Lo standard IEEE754Tre formati:

Singola precisione (32 bit: 23 bit mantissa + 8 bit esp. + 1 bit segno)Doppia precisione (64 bit: 52 bit mantissa + 11 bit esp. + 1 bit segno)Quadrupla precisione (128 bit: 112 bit mantissa + 15 bit esp. + 1 bit segno)

Page 40: La Rappresentazione delle Informazioniwebuser.unicas.it/destefano/fi_ind_docs/13_Rappresenta...1111111001 Quale base usare ? Decimale naturale per gli esseri umani. Esadecimale utile

Operazioni in floating point

Molto più complicate rispetto agli interi e alla virgola fissaDiverse operazioni necessarie:

Denormalizzazione per allineare i valori all’esponente più altoSommare le mantisseNormalizzare il risultato e verificare se si è in under/overflowArrotondare se necessario

Se i segni sono diversi, bisogna calcolare la differenza tra le mantisse e determinare il segno del risultato Operazioni troppo complesse per poter essere effettuate con l’unità aritmetica per gli interi.