Rappresentazione di Numeri Reali Un numero reale una

  • Slides: 10
Download presentation
Rappresentazione di Numeri Reali • Un numero reale è una grandezza analogica (continua) e

Rappresentazione di Numeri Reali • Un numero reale è una grandezza analogica (continua) e quindi è rappresentabile solo in modo approssimato. • Esistono due forme per rappresentare un numero reale – Segno, parte intera, parte decimale (rappresentazione in virgola fissa) – Segno, mantissa, esponente (rappresentazione in virgola mobile)

Rappresentazione in virgola fissa (fixed-point) • Utilizzando una rappresentazione su N bit si assume

Rappresentazione in virgola fissa (fixed-point) • Utilizzando una rappresentazione su N bit si assume che la posizione della virgola sia fissa in un preciso punto all’interno della sequenza. Quindi si assegnano k bit per la parte intera e N-k bit per la parte decimale NB In una rappresentazione di tipo posizionale le cifre alla destra della virgola vengono moltiplicate per potenze negative della base Es. (5. 75)10 = 5*100 + 7*10 -1 + 5*10 -2 (11. 011)2 = 1*21 + 1*20 + 0*2 -1 + 1*2 -2 + 1*2 -3

Conversione decimale-binario di numeri non interi • La parte intera si converte col metodo

Conversione decimale-binario di numeri non interi • La parte intera si converte col metodo delle divisioni successive • Per la parte alla destra della virgola: – si moltiplica la parte a destra della virgola per 2 – si prende la parte intera del risultato come cifra utile – si ripetono i 2 passi precedenti finché la parte a destra della virgola non diventa 0 Es. 19. 375 Sappiamo che (19)10 = (10011)2 0. 375 * 2 = 0. 75 * 2 = 1. 5 0. 5 * 2 = 1. 0 Quindi (19. 375)10 = (10011. 011)2

Osservazione importante Non è detto che un numero che ha una rappresentazione finita in

Osservazione importante Non è detto che un numero che ha una rappresentazione finita in una base, abbia una rappresentazione finita anche in un’altra. Es. 1/3 = (0. 1)3 = (0. 33333…. )10 L’unico caso in cui questo avviene sicuramente è quando si converte da una base ad un’altra che ne è una potenza. Es. (101011100110. 011)2 = (5346. 3)8

Rappresentazione in virgola mobile (floating-point) • Ricorda la notazione scientifica dei numeri • Si

Rappresentazione in virgola mobile (floating-point) • Ricorda la notazione scientifica dei numeri • Si riescono a manipolare numeri con ordini di grandezza molto differenti utilizzando per la rappresentazione un insieme limitato di bit • Nel formato esponenziale un numero N viene espresso nella seguente forma • b base del sistema di numerazione • m mantissa del numero • e esponente

Rappresentazione in virgola mobile (floating-point) b è 2 (la base è prefissata) Quindi per

Rappresentazione in virgola mobile (floating-point) b è 2 (la base è prefissata) Quindi per rappresentare un numero reale ci basta rappresentare mantissa ed esponente. La mantissa si suppone in virgola fissa con la virgola all’inizio, seguita sempre da 1 (MSB). Es (decimale) (binario) 123. 45 = . 12345 * 103 11. 1011 = . 111011 * 22 Ricorda: moltiplicare (dividere) un numero per una potenza della base equivale a far scorrere a sinistra (destra) il numero di un numero di posizioni pari all’esponente

Rappresentazione standard • Su 32 bit – 1 bit per segno del numero –

Rappresentazione standard • Su 32 bit – 1 bit per segno del numero – 8 bit per esponente (generalmente rappresentato in complemento a due) – 23 bit per la parte frazionaria della mantissa – la parte non frazionaria (0) e la prima cifra (1) della mantissa vengono sottintese – 0 può avere segno positivo o negativo

Somma di due numeri in virgola mobile Quando si fanno somme, anche a mano,

Somma di due numeri in virgola mobile Quando si fanno somme, anche a mano, per sommare due numeri è necessario incolonnarli. In una rappresentazione in virgola mobile questo significa uguagliare gli esponenti. Es. (decimale) 123. 5 + 1240. 3 In virgola mobile . 1235 * 103 +. 12403 * 104 Quindi devo per prima cosa riportare i due numeri all’esponente più grande 123. 5 =. 01235 * 104 … e poi posso sommare. 01235 +. 12403 -------. 13638 Quindi: 123. 5 + 1240. 3 =. 13638 * 104 = 1363. 8

Approssimazioni nelle operazioni in floating point Quando la distanza fra la cifra più significativa

Approssimazioni nelle operazioni in floating point Quando la distanza fra la cifra più significativa e quella meno significativa è maggiore del numero di cifre a disposizione, il numero deve essere troncato: si trascurano cioè le cifre meno significative per le quali “non c’è spazio”. Es. Supponendo di usare 4 bit per la mantissa 10 + 0. 5 10 =. 1101 * 24 0. 5 = 0. 1 * 20 Il risultato sarebbe 0. 11011 * 24 , ma ho solo 4 bit Quindi il risultato è 0. 1101 * 24, e quindi 10+0. 5=10!

Approssimazioni nelle operazioni in floating point Apparente paradosso: 10. 5 non è rappresentabile con

Approssimazioni nelle operazioni in floating point Apparente paradosso: 10. 5 non è rappresentabile con 4 bit, ma 15 sì! 15 =. 1111 * 24 Per avere un’idea della precisione con cui opera un calcolatore (numero N di bit con cui rappresenta la mantissa in floating point) si definisce precisione di macchina (epsilon) il più piccolo numero che sommato a 1 dà un risultato diverso da 1. Maggiore è N, più piccolo è epsilon.