Fondamenti di Informatica. Codifiche per numeri decimali: virgola fissa e mobile

Размер: px
Начинать показ со страницы:

Download "Fondamenti di Informatica. Codifiche per numeri decimali: virgola fissa e mobile"

Транскрипт

1 Corso di per il corso di Laurea di Ingegneria Meccanica Codifiche per numeri decimali: virgola fissa e mobile Università degli Studi di Udine - A.A Docente Ing. Sandro Di Giusto Ph.D. 1

2 Rappresentazioni dei numeri con virgola Come abbiamo detto, l'ultimo aspetto da considerare nella codifica dei numeri binari, è quello relativo ai numeri razionali, con virgola In generale esistono almeno due notazioni distinte per gestire i numeri con virgola A virgola fissa (fixed point) A virgola mobile (floating point) Nelle prossime slide confronteremo i due metodi, analizzando i principi di funzionamento, i pregi ed i difetti 2

3 Rappresentazione dei numeri in virgola fissa Il metodo a virgola fissa ha il pregio di essere molto semplice da implementare ed anche da capire (per l'uomo) Ha lo svantaggio di essere assolutamente poco flessibile e preciso ed inadatto per descrivere contemporaneamente numeri molto piccoli o molto grandi Il principio di funzionamento è molto semplice: Oltre a definire una profondità di parola per la rappresentazione di un numero, si definisce anche in modo statico/fisso la profondità della parte intera e di quella frazionaria In questo modo si attribuiscono su n bit totali, n i bit per descrivere la parte intera (al solito in complemento a 2) e n f = n-n i bit per descrivere la parte frazionaria La parte intera si scrive secondo le regole standard finora viste, mentre la parte frazionaria si scrive tenendo presente che il numero è sempre positivo ed usando esponenti negativi per la base 2 3

4 Rappresentazione dei numeri in virgola fissa La parte frazionaria segue infatti lo stesso principio che si usa con il sistema numerico decimale Es = 1* * *10-2 Nel caso binario la differenza sta nel fatto che la base per l'appunto è 2 e non 10 Es ? 10 1*2 0 +0*2-1 +0*2-2 +1*2-3 +0*2-4 +1*2-5 = = Convertire un numero dalla base binaria a quella decimale richiede quindi la solita formula, leggermente rimaneggiata: n f n i 1 N 10 = k =n f n f 1 d k 2 k n f k =0 Convertire invece un numero dalla base decimale a quella binaria è un'operazione non immediata e soprattutto che non offre garanzia di correttezza, una volta fissata una profondità n f n 1 d k 2 k n f= k=0 d k 2 k n f 4

5 Rappresentazione dei numeri in virgola mobile Molto più interessante è invece la rappresentazione in virgola mobile, che quindi analizzeremo in maggior dettaglio L'idea della notazione in virgola mobile è quella di utilizzare nel modo più efficiente possibile tutti i bit della parola, senza dover sacrificare a priori un certo numero di bit per la parte intera ed i restanti per la parte frazionaria Per ottenere questo risultato il sistema si basa sul concetto di notazione scientifica di un numero, ovvero quel modo di rappresentare un valore reale attraverso l'uso congiunto di una parte decimale e di un esponente: Es *10 2 Es *10-5 Es *10 8 5

6 La notazione scientifica La notazione scientifica prevede che il numero sia scritto sempre con una sola cifra intera, seguita dalle cifre decimali necessarie e dall'opportuna base ed esponente Se la parte intera è sempre un numero diverso da 0, allora il numero si dice scritto in notazione scientifica normalizzata Questa stessa notazione può essere ovviamente utilizzata anche nel campo dei numeri binari Es *2 4 Nel sistema binario ovviamente la forma normalizzata prevede che la cifra intera sia necessariamente un 1 (per cui la mantissa rappresenta un numero compreso tra 1 e 2) Il risultato è che un numero scritto in notazione scientifica normalizzata in base binaria, deve rispettare questo schema: 1.xxxxxxxx*2 yyyy Da notare che ora la virgola prende il nome di virgola binaria 6

7 Lo standard IEEE 754 Anche nel caso della virgola mobile tuttavia esiste il problema di decidere quanti bit utilizzare per descrivere la mantissa e quanti invece per descrivere l'esponente, una volta scelta la profondità di parola n Tale scelta è ovviamente arbitraria e ognuno può definirsi i propri valori per tali parametri, come risultato dei propri compromessi Tuttavia esiste una formalizzazione dello standard floating point, chiamato standard IEEE 754 per virgola mobile che è universalmente accettato dalla quasi totalità dei calcolatori e che stabilisce in modo inequivocabile tutte le regole da seguire per scrivere correttamente tali numeri Lo standard IEEE 754 definisce 3 tipi di formati (in realtà 4): A precisione singola (32 bit) A precisione doppia (64 bit) A precisione doppia estesa (più di 79 bit, generalmente 80) 7

8 Lo standard IEEE 754 La differenza principale dei vari formati è che ovviamente permettono precisioni e range di descrivibilità superiori Per tutti i formati comunque la struttura del dato è la seguente: 1 bit di segno, s (1 per negativi, 0 per positivi) n e bit di esponente, E n m bit di mantissa, M (detta precisione del numero) Il numero può dunque essere rappresentato in generale con questa formula: N = 1 s M 2 E Va però notato che, trattando numeri in notazione scientifica normalizzata, essi hanno per costruzione tutti necessariamente un 1 come prima cifra e perciò è possibile ometterla nella scrittura della mantissa (guadagnando un bit ulteriore); la formula quindi diventa: N = 1 s 1 M 2 E (si parla di bit implicito o bit nascosto) 8

9 Lo standard IEEE 754 Vediamo ora qualche dettaglio sulle varianti di formato disponibili Singola precisione (32 bit) 1 bit di segno, s 8 bit di esponente (segno incluso) 23 bit di mantissa (che diventano 24 bit virtuali con l'1 implicito ) Può descrivere numeri che vanno da *10-38 fino a *10 38 (e ovviamente lo stesso range anche nel campo negativo) Doppia precisione (64 bit) 1 bit di segno, s 11 bit di esponente (segno incluso) s esponente mantissa s esponente mantissa 52 bit di mantissa (che diventano 53 bit virtuali con l'1 implicito ) Può descrivere numeri che vanno da circa * fino a circa * (e ovviamente lo stesso range anche nel campo negativo) 9

10 Lo standard IEEE 754 E' evidente come il range di numeri descrivibili e la loro precisione, in particolare per la doppia precisione, siano davvero notevoli Possono tuttavia esistere dei casi in cui il numero che si vuole rappresentare sia troppo piccolo per poter essere rappresentato (underflow) o troppo grande (overflow), per cui è necessario passare a rappresentazioni ancora più precise Lo standard IEEE 754 ha anche cercato di focalizzare molti sforzi per realizzare formati che semplificassero poi il più possibile anche la gestione e le operazione banali su tali numeri A tal proposito estrema importanza è stata data alla possibilità di poter effettuare in modo rapido dei confronti fra numeri Per ottenere questo è stato ad esempio isolato per primo il bit di segno s, dato che un numero positivo è certamente maggiore di uno negativo, a prescindere dal valore di esponente e mantissa 10

11 Lo standard IEEE 754 Il campo esponente è stato piazzato subito dopo il segno s, poiché tra due numeri in notazione scientifica a e b, a parità di segno, chi ha esponente maggiore è anche certamente il maggiore dei due (e solo a parità di esponente occorre confrontare la mantissa) Infine la mantissa è scritta in binario puro senza segno e quindi i confronti si fanno banalmente con pochi controlli sui bit Nasce però ovviamente un problema nel campo esponente, poiché non si tratta di un numero in binario puro, ma di un numero con segno Se si scrive l'esponente in modulo e segno o in complemento a 2, il confronto tra un esponente più piccolo ed uno più grande non è immediato e richiederebbe parecchie operazioni Se però si potesse scrivere l'esponente come un numero binario senza segno (quindi solo positivo), i confronti tra esponenti si potrebbero fare in estrema rapidità, allo stesso modo con cui si fanno sulla mantissa Per ottenere questo vantaggio si usa la tecnica di polarizzazione, o scrittura dell'esponente in eccesso P 11

12 La polarizzazione Il principio della polarizzazione è molto semplice: Prendendo ad esempio un numero in precisione singola (32 bit), l'esponente deve essere scritto in 8 bit, ovvero potrebbe assumere i valori tra -128 e +127 (in complemento a 2) o in generale tra 0 e 255 (se lo prendiamo come un numero positivo) Se ora assumiamo come valore di polarizzazione P il numero 127, possiamo scrivere la formula vista in precedenza in questo modo: N = 1 s 1 M 2 E P In questo caso avremo che per E=1 (il più piccolo possibile) otteniamo un esponente utile di -126, mentre per un E=254 (il massimo possibile) otteniamo un esponente utile di +127 Abbiamo quindi ottenuto una mappatura che porta una scrittura di numeri solo positivi (da 0 a 255) verso una scrittura che descrive in modo crescente numeri negativi e positivi (da -127 a +128), permettendoci quindi ora di trattare E come un numero positivo 12

13 Le codifiche dei numeri speciali Identico trucco è utilizzabile nel sistema a doppia precisione in cui però il valore di polarizzazione P è pari a 1023 Un'ultima cosa va accennata a riguardo dello standard IEEE 754, ovvero la capacità di esprimere anche valori particolari, attraverso un'opportuna codifica Per ottenere questo alcuni valori di E ed M sono stati riservati e quindi non sono utilizzabili nelle rappresentazioni standard Il numero 0 è descritto da E=0 ed M=0 (s non conta) I numeri normalizzati si descrivono come visto prima, ma usando valori dell'esponente compresi tra 1 e 254 (per la singola precisione) e quindi ottenendo esponenti utili tra -126 e +127 I numeri denormalizzati devono avere E=0 ed M può assumere qualunque valore, escluso lo 0 I numeri infiniti, con E=255 e M=0 I NAN (Not A Number), con E=255 e M diverso da 0 13

14 Le codifiche dei numeri speciali Ovviamente ragionamenti del tutto analoghi, seppure con le opportune distinzioni nei valori, valgono anche per il formato a doppia precisione Sui numeri in virgola mobile ovviamente sono definite anche tutte le principali operazioni, quali somma, sottrazione, moltiplicazione e divisione, ma non saranno trattate in questo corso 14

15 Esempio di calcolo in singola precisione Si rappresenti in singola precisione il numero -19, Il bit di segno è 1 poiché il numero è negativo S = 1 (1 bit) Si converte il numero 19, in due passi: Parte intera (binario puro): = Parte frazionaria (binario puro): 0, = 0, La mantissa non normalizzata è dunque: 10011, La mantissa normalizzata diventa: 1, *2 4 F = (23 bit, senza bit nascosto) L'esponente 4 10 devo scriverlo su 8 bit con bias 127: = 131 = (binario puro) E = (8 bit) Risultato (su 32 bit): s esponente mantissa = C19A

16 Esempio di calcolo in singola precisione Si decodifichi in decimale il numero in singola precisione 3A9B Decodifichiamo il valore esadecimale in binario 3A9B = Il bit di segno è 0 quindi il numero decimale è positivo S = s esponente mantissa L'esponente compreso di bias è scritto sugli 8 bit seguenti: = (binario puro) Tolgo il bias ( ) per riottenere l'esponente reale: = = E La mantissa è scritta sui 23 bit seguenti: Reintegro il bit nascosto iniziale: 1, Effettuo la moltiplicazione per l'esponente: 0, Decodifico la mantissa in decimale: = S Il risultato finale è dunque: = *

Rappresentazione dei numeri reali in un calcolatore

Rappresentazione dei numeri reali in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri reali in un calcolatore Lezione 3 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione di numeri

Подробнее

Codifica. Rappresentazione di numeri in memoria

Codifica. Rappresentazione di numeri in memoria Codifica Rappresentazione di numeri in memoria Rappresentazione polinomiale dei numeri Un numero decimale si rappresenta in notazione polinomiale moltiplicando ciascuna cifra a sinistra della virgola per

Подробнее

Utilizzata per rappresentare numeri frazionari nella. numero =(mantissa) 2 esponente. Il formato piu utilizzato e quello IEEE P754, rappresentato

Utilizzata per rappresentare numeri frazionari nella. numero =(mantissa) 2 esponente. Il formato piu utilizzato e quello IEEE P754, rappresentato Rappresentazione in oating-point Utilizzata per rappresentare numeri frazionari nella notazione esponenziale: numero =(mantissa) 2 esponente Il formato piu utilizzato e quello IEEE P754, rappresentato

Подробнее

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 I numeri reali Sommario Conversione dei numeri reali da base 10 a base B Rappresentazione dei numeri reali Virgola fissa Virgola mobile (mantissa

Подробнее

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile)

Numeri reali. Notazione scientifica (decimale) Floating Point. Normalizzazione. Esempi. Aritmetica del calcolatore (virgola mobile) Numeri reali Aritmetica del calcolatore (virgola mobile) Capitolo 9 1 Numeri con frazioni Posso essere rappresentati anche in binario Es.: 1001.1010 = 2 4 + 2 0 +2-1 + 2-3 =9.625 Quante cifre dopo la virgola?

Подробнее

Numeri in virgola mobile

Numeri in virgola mobile Numeri in virgola mobile PH. 3.6 1 Motivazioni virgola mobile Rappresentazione in virgola fissa per rappresentare numeri frazionari fissando la posizione della virgola su una posizione prestabilita Le

Подробнее

Sistemi di Numerazione Binaria

Sistemi di Numerazione Binaria Sistemi di Numerazione Binaria BIN.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Подробнее

Fondamenti di Informatica - 1. Esercizi A.A. 2011/2012

Fondamenti di Informatica - 1. Esercizi A.A. 2011/2012 Fondamenti di Informatica - 1 Esercizi A.A. 2011/2012 Esercizio Esercizio Esercizio Esercizio Esercizio Dato ilnumero 11000000111100000000000000000000 rappresentato secondo lo standard floating point IEEE

Подробнее

Rappresentazione in virgola mobile Barbara Masucci

Rappresentazione in virgola mobile Barbara Masucci Architettura degli Elaboratori Rappresentazione in virgola mobile Barbara Masucci Punto della situazione Abbiamo visto le rappresentazioni dei numeri: Ø Sistema posizionale pesato per Ø Ø Interi positivi

Подробнее

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano Rappresentazione di dati: numerazione binaria Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano Rappresentazione binaria Tutta l informazione interna ad un computer è codificata con sequenze

Подробнее

Rappresentazione dei dati in memoria

Rappresentazione dei dati in memoria Rappresentazione dei dati in memoria La memoria Una memoria deve essere un insieme di oggetti a più stati. Questi oggetti devono essere tali che: le dimensioni siano limitate il tempo necessario per registrare

Подробнее

Esercitazione n. 5. Rappresentazione dei numeri

Esercitazione n. 5. Rappresentazione dei numeri Esercitazione n. 5 Rappresentazione dei numeri dott. Carlo Todeschini [email protected] Politecnico di Milano A.A. 2009/2010 Queste slide sono distribuite con licenza Creative Commons Attribuzione-Non

Подробнее

Rappresentazione numeri reali

Rappresentazione numeri reali Rappresentazione numeri reali I numeri reali rappresentabili in un calcolatore sono in realtà numeri razionali che approssimano i numeri reali con un certo grado di precisione Per rappresentare un numero

Подробнее

Informatica Generale 02 - Rappresentazione numeri razionali

Informatica Generale 02 - Rappresentazione numeri razionali Informatica Generale 02 - Rappresentazione numeri razionali Cosa vedremo: Rappresentazione binaria dei numeri razionali Rappresentazione in virgola fissa Rappresentazione in virgola mobile La rappresentazione

Подробнее

Rappresentazione binaria

Rappresentazione binaria Rappresentazione binaria Per informazione intendiamo tutto quello che viene manipolato da un calcolatore: numeri (naturali, interi, reali,... ) caratteri immagini suoni programmi... La più piccola unità

Подробнее

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali Un numero reale è una grandezza continua Può assumere infiniti valori In una rappresentazione di lunghezza limitata, deve di solito essere approssimato. Esistono due forme

Подробнее

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base Cambiamenti di base Tecniche Informatiche di Base TIB 1 Il sistema posizionale decimale L idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 + 30 + 2 = 1 10 2 + 3 10 1 + 2 10 0 Un numero

Подробнее

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

Подробнее

Rappresentazione dei Numeri

Rappresentazione dei Numeri Rappresentazione dei Numeri Rappresentazione dei Numeri Il sistema numerico binario è quello che meglio si adatta alle caratteristiche del calcolatore Il problema della rappresentazione consiste nel trovare

Подробнее

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio FONDAMENTI DI INFORMATICA Prof. Alfredo Accattatis Slide (rielaborate) del prof. Emiliano Casalicchio 2 Caratteri e codifica Un carattere in MATLAB è rappresentato usando le virgolette singole 'a', 'x',

Подробнее

CALCOLO NUMERICO. Rappresentazione virgola mobile (Floating Point)

CALCOLO NUMERICO. Rappresentazione virgola mobile (Floating Point) ASA Marzo Docente Salvatore Mosaico Introduzione al Calcolo Numerico (parte ) CALCOLO NUMERICO Obiettivo del calcolo numerico è quello di fornire algoritmi numerici che, con un numero finito di operazioni

Подробнее

Calcolo numerico e programmazione Rappresentazione dei numeri

Calcolo numerico e programmazione Rappresentazione dei numeri Calcolo numerico e programmazione Rappresentazione dei numeri Tullio Facchinetti 16 marzo 2012 10:54 http://robot.unipv.it/toolleeo Rappresentazione dei numeri nei calcolatori

Подробнее

Sistemi di Numerazione Binaria

Sistemi di Numerazione Binaria Sistemi di Numerazione Binaria NB.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Подробнее

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale Analogico vs. Digitale LEZIONE II La codifica binaria Analogico Segnale che può assumere infiniti valori con continuità Digitale Segnale che può assumere solo valori discreti Analogico vs digitale Il computer

Подробнее

Rappresentazione FP IEEE-754 Somme di numeri FP

Rappresentazione FP IEEE-754 Somme di numeri FP Rappresentazione FP IEEE-754 Somme di numeri FP Salvatore Orlando & Marta Simeoni Arch. Elab.A -M. Simeoni 1 Mantissa = d 0. d -1...d -k Lo standard IEEE754 usa una notazione scientifica normalizzata,

Подробнее

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono La codifica binaria Fondamenti di Informatica Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore Introduzione q Il calcolatore usa internamente

Подробнее

Floating-point: mantissa La mantissa e codicata in modulo e segno su 24 bit, la mantissa e sempre normalizzata nella forma 1:XXXXX si rappresenta solo

Floating-point: mantissa La mantissa e codicata in modulo e segno su 24 bit, la mantissa e sempre normalizzata nella forma 1:XXXXX si rappresenta solo Rappresentazione in oating-point Utilizzata per rappresentare numeri frazionari nella notazione esponenziale: numero =(mantissa) 2 esponente Il formato piu utilizzato e quello IEEE P754, rappresentato

Подробнее

Lezione 3. I numeri relativi

Lezione 3. I numeri relativi Lezione 3 L artimetcia binaria: i numeri relativi i numeri frazionari I numeri relativi Si possono rappresentare i numeri negativi in due modi con modulo e segno in complemento a 2 1 Modulo e segno Si

Подробнее

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Informatica B. Daniele Loiacono La codifica binaria Informatica B Introduzione Il calcolatore usa internamente una codifica binaria ( e ) per rappresentare: i dati da elaborare le istruzioni dei programmi eseguibili Fondamenti di codifica

Подробнее

Numeri binari Conversioni numeriche: decimali-binario Operazioni algebriche con numeri binari Russo ing. Saverio

Numeri binari Conversioni numeriche: decimali-binario Operazioni algebriche con numeri binari Russo ing. Saverio Numeri binari Conversioni numeriche: decimali-binario Operazioni algebriche con numeri binari Russo ing. Saverio Arch. Elab. - S. Orlando 1 Il trionfo dello ZERO Il trionfo dello ZERO C era una volta un

Подробнее

Rappresentazione in virgola fissa. Rappresentazione in virgola mobile (floating point)

Rappresentazione in virgola fissa. Rappresentazione in virgola mobile (floating point) RAPPRESENTAZIONE DI NUMERI REALI 2 modalità Rappresentazione in virgola fissa Rappresentazione in virgola mobile (floating point) M. GIACOMIN - UNIVERSITA DI BRESCIA ESERCITAZIONI DI FONDAMENTI DI INFORMATICA

Подробнее

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono La codifica binaria Fondamenti di Informatica Introduzione q Il calcolatore usa internamente una codifica binaria (0 e 1) per rappresentare: i dati da elaborare (numeri, testi, immagini, suoni, ) le istruzioni

Подробнее

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2 Esercitazioni su rappresentazione dei numeri e aritmetica Salvatore Orlando & Marta Simeoni Interi unsigned in base 2 Si utilizza un alfabeto binario A = {0,1}, dove 0 corrisponde al numero zero, e 1 corrisponde

Подробнее