M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 1
RRAAPPPPRREESSEENNTTAAZZIIOONNEE DDII NNUUMMEERRII RREEAALLII
Rappresentazione in virgola fissa
Rappresentazione in virgola mobile (floating point)
2 modalità
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 2
Rappresentazione in virgola fissa
Parte intera Parte frazionaria nI bit nF bit
Esempio
Peso Ferrari F-2003 GA: ≈ 600 kg ≈ 219 grammi 10000000000000000000 [parte intera: 20 bit]
Peso molecola di CO2: ≈ 10-23 grammi ≈ 2-80 grammi 0.000000 … … … … … … 1 [parte frazionaria: 80 bit]
⇒⇒⇒⇒ Spreco dei bit disponibili: la precisione dovrebbe
essere funzione dell'ordine di grandezza!
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 3
Granularità = intervallo tra due numeri consecutivi La granularità della rappresentazione in virgola fissa è costante: Parte intera Parte frazionaria
0 0 0 0 0 0 0 1 nI bit . nF bit
Per un qualsiasi numero I.F, il numero successivo è I.F + 2−−−−
⇒ la granularità è fissa e pari a 2−−−−
(nell’esempio, 2-8)
nF
nF
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 4
Rappresentazione in virgola mobile (floating point) sM sE mantissa (|m|) esponente (|e|) nM bit nE bit
⇒ N = m*2e Forma normalizzata: Stesso numero 0.12: 1*2-1 10*2-2 … ⇒ si stabilisce una forma univoca di rappresentazione
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 5
Rappresentazione della mantissa Prima cifra significativa diversa da 0 alla destra del punto di radice 1: senza hidden bit
0.1xxxxxxxx *2e 2: con hidden bit
0.1xxxxxxxx *2e
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 6
Prima cifra significativa diversa da 0 alla sinistra del punto di radice 3: senza hidden bit
1.xxxxxxxxx * 2e 4: con hidden bit
1.xxxxxxxxx * 2e
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 7
Rappresentazione dell’esponente Sono possibili tutte le rappresentazioni di valori interi relativi:
• Modulo e segno
• Complemento a due
• Complemento a uno
• Con polarizzazione o “eccesso”
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 8
Rappresentazione di numeri relativi con polarizzazione
nE bit
y 0 ≤ y ≤ 2 -1 Rappresento il numero aggiungendovi una costante P (polarizzazione o “eccesso”) y = e + P (tipicamente P = 2 -1 o P = 2 -1 – 1) ⇒ negativi rappresentati come positivi
esponentevalore rappresentato
nEnE
nE
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 9
Esempio: nE=5, P = 24-1 = 15 00000 00001 … 01111 …. 11110 11111
-15 -14 … 0 …. 15 16
y= e + P ⇒ e= y - P
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 10
Esempio: Il formato floating point standard IEEE P754 (precisione semplice)
Mantissa: 23 bit, prima cifra sign. alla sx, hidden bit
Esponente: 8 bit, eccesso 127
N = (-1)S * 2(Y – 127) * 1.x
s y x
31 30 22 0(8 bit) (23 bit)
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 11
Mantissa normalizzata: ± (s) 1. 23 bit di rappresentazione per la mantissa (y) 0: segno + 1: segno - Esponente: X
Rappresentazione in 8 bit a eccesso 127 (127 = 2n-1 -1), con le configurazioni 00000000 e 11111111 non ammesse! x= e + 127 ⇒ e = x -127 (-126 ≤ e ≤ 127)
HIDDEN BIT
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 12
Esercizio (Appello del 23 set 2003) Definire il concetto di polarizzazione dell’esponente nella codifica IEEE 754 dei numeri in virgola mobile (singola precisione). Se il campo esponente di una codifica contiene il numero 00111011 qual è il valore decimale dell’esponente? [2] Soluzione y = e + 127 valori rappresentabili da –127 a +128 (NB: gli estremi non sono utilizzati propriamente) Nel caso specifico: y = 1+2+8+16+32= 59 quindi e = 59-127 = -68
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 13
Esercizio (Appello del 7 gen 2003) Ricavare il valore decimale del seguente numero in virgola mobile rappresentato secondo lo standard IEEE 754 a 32 bit: [3]
0 10000000 10000000000000000000000 Soluzione Segno: + Esponente: y = 27 = 128 e = 128-127=1 Mantissa: m = 1.1 ⇒ N = 1.12 * 21 = 112 = 310
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 14
Esercizio (Appello del 5 feb 2001) Utilizzando la rappresentazione standard IEEE per numeri floating point su 32 bit, si determini il valore decimale della sequenza di bit corrispondente a 3F400000 in base 16. [2] Soluzione Notazione binaria: 0011 1111 0100 0000 0000 0000 0000 0000 segno: + esponente: y = 01111102 = 126 e = 126-127 = - 1
⇒ N = 1.1 * 2-1 = 0.112 = 2-1 + 2-2 = 0.5 + 0.25 = 0.75
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 15
Esercizio Rappresentare il numero decimale –4.5 secondo lo standard in virgola mobile IEEE 754 a 32 bit. Soluzione Segno: 1 Rapp. binaria: 4.510 = 100.12 Forma normalizzata: N = 1.001 * 22 Esponente: e = 2 ⇒ y = 2+127 = 12910 = 10000001
⇒ IEEE754: 1 10000001 0010……0
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 16
PASSAGGIO IMPORTANTE: normalizzazione ES. 1
Rappresentazione binaria: 1001.01001 = 1.00101001 * 23 (forma normalizzata)
ES. 2 Rappresentazione binaria:
0.001011 = 1.011 * 2-3 (forma normalizzata)
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 17
PER ESERCITARSI…
http://www.h-schmidt.net/FloatApplet/IEEE754.html Convertitore (on line) tra:
• IEEE754 • Binario • Decimale • Esadecimale
E’ sufficiente inserire un valore in una delle precedenti rappresentazioni per ottenere i valori delle altre tre.
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 18
Esercizio Si consideri la seguente rappresentazione floating point:
1 bit per il segno 4 bit per l’esponente in complemento a due 19 bit per mantissa, normalizzata con 1A cifra ≠0 a dx del punto
Rappresentare –20.02510 Soluzione Formato: s yyyy xxxxxxxxxx con mantissa 0.1 … … … Rappresentazione binaria:
2010 = 101002
0.025 = …
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 19
0.025
0.05 0
0.1 0 0.025 = 0.0000011
0.2 0
0.4 0
0.8 0
1.6 1
1.2 1
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 20
20.025 = 10100.0000011
Forma norm: = 0.101000000011 * 25
Esponente: 510 = 0101 già espressa in compl. a due
Segno: -
⇒⇒⇒⇒ Rappresentazione Floating Point:
1 0101 1010000000110011001
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 21
Esercizio
Si consideri la seguente rappresentazione floating point: 1 bit per il segno 5 bit per l’esponente in complemento a due 15 bit per mantissa, normalizzata con 1A cifra ≠0 a sx del punto di
radice con hidden bit Rappresentare -351.534410
Soluzione
Formato: s yyyyy xxxxxxxxxxxxxxx con mantissa 1.xxx…xxx
Rappresentazione binaria del valore assoluto:
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 22
351 = 101011111
0.5344
1.0688 1
0.1376 0
0.2752 0
0.5504 0
1.1008 1
0.2016 0
0.4032 0
…
quanto dobbiamo andare avanti? La forma normalizzata sarà
1.01011111 + altri 7 bit per arrivare a 15
7 bit
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 23
Rappresentazione normalizzata:
351.534410 = 101011111.1000100 =
1.010111111000100 * 28
Esponente: 810 = 01000 (già in compl. a 2 con 5 bit)
Segno: -
Rappresentazione Floating Point:
1 01000 010111111000100
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 24
Esercizio
Si consideri la seguente rappresentazione floating point: 1 bit per il segno 5 bit per l’esponente in complemento a due 16 bit per la mantissa, normalizzata con 1A cifra ≠0 a sx del punto
di radice senza hidden bit Rappresentare 1330.46318 (in base 8) Soluzione
Forma normalizzata del tipo 1.xxxxxxxxxxxxxxx
Rappresentazione binaria:
001 011 011 000 . 100 110 011 001 … (mi bastano 16 bit)
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 25
Forma normalizzata:
001 011 011 000 . 100 110 011 011 =
1.011011000100110 * 29
Esponente: 910 = 01001 già in complemento a due con 5 bit
Segno: +
⇒ Rappresentazione floating point:
0 01001 1011011000100110
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 26
Esercizio
Si consideri la seguente rappresentazione floating point: 1 bit per il segno 4 bit per l’esponente in eccesso 2m-1 7 bit per la mantissa, normalizzata con 1A cifra ≠0 a dx del punto
di radice con hidden bit Trovare il numero decimale corrispondente alla rappresentazione 111001011000
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 27
Soluzione 1 - 1100 – 1011000 Segno: - Esponente: 11002 = 12 in eccesso 24-1 = 8 ⇒ y = e + P ⇒ e = y-P = 12 – 8 = 4 mantissa : 0.11011000
⇒⇒⇒⇒ Numero rappresentato :
N = - 0.11011000 * 24
= - 1101.12 = 13.5
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 28
Limiti della capacità di rappresentazione floating point nE : numero di bit per l'esponente, nM : numero di bit per la mantissa
Numero massimo rappresentabile = + MaxMant*2MaxExp
Numero minimo rappresentabile = - MaxMant*2MaxExp
Zero + = + MinMant*2MinExp
Zero - = - MinMant*2MinExp Nel caso di mantissa 0.1xxxx (senza hidden bit)
MaxMant = 0.11…1 = 1-2-Nm MinMant = 0.1000… = 2-1
MaxExp = max valore rappresentabile (+)
MinExp = min valore rappresentabile ( « il più grande negativo »)
MIN MAX0 0+0-
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 29
Esempio: IEEE 754 con singola precisione MinExp = -126 MaxExp = +127 [estremi per scopi speciali] Numero più grande normalizzato: ± 1.11…12 * 2127 ≈≈≈≈ 2*2127 = 2128 Numero più piccolo normalizzato: ± 1.00…02 * 2-126 = 2-126
OVERFLOW - NORMALIZZATI - DENORM. - UNDERF. DENORM.+ NORMALIZZATI + OVERFLOW +
-∞∞∞∞ -2128 -2-126 -2-149 0 2-149 2-126 2128 +∞∞∞∞
M. GIACOMIN - UNIVERSITA’ DI BRESCIA – ESERCITAZIONI DI FONDAMENTI DI INFORMATICA A 30
Granularità nella rappresentazione floating point Forma normalizzata: N= 0.1xxxxxxx * 2e (caso dx, no hidden bit) ⇒ granularità: 0.00000001*2e
ovvero: 2-Nm *2e [Nm: numero di bit per la mantissa] Per esempio con nM=3: e = +3 Granularità = 2-3 * 23 = 1 e = 0 Granularità = 2-3 * 20 = 2-3 e = -3 Granularità = 2-3 * 2-3 = 2-6 ⇒ i numeri "si infittiscono" per valori prossimi allo 0
Top Related