Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Floating point / Virgola mobile, Schemi e mappe concettuali di Informatica

Appunti su floating point/Virgola mobile di informatica

Tipologia: Schemi e mappe concettuali

2021/2022

Caricato il 26/10/2022

AleCaliz
AleCaliz 🇮🇹

41 documenti

1 / 11

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Floating Point
Notazione in virgola mobile
N = M × BE
mantissa esponente
base
esempi 34.76 × 104
3.6891 × 106= 36.891 ×105 =368.91 ×104
12.78 × 10-3
1.6273 × 102
forma normalizzata: la mantissa ha una sola cifra (0) prima del
punto.
Quando la base è 2 la forma normalizzata è:
1. xxxxxxx × 2 yyyy esponente
rappresentazione in base 2 della
parte significativadella mantissa
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica Floating point / Virgola mobile e più Schemi e mappe concettuali in PDF di Informatica solo su Docsity!

Floating Point

Notazione in “virgola mobile”

N = M × BE

mantissa esponente base

esempi

34.76 × 104 3.6891 × 106 = 36.891 ×105 =368.91 × 104 12.78 × 10- 1.6273 × 102

forma normalizzata: la mantissa ha una sola cifra (≠0) prima del punto.

Quando la base è 2 la forma normalizzata è:

  1. xxxxxxx × 2

yyyy (^) esponente

rappresentazione in base 2 della “parte significativa” della mantissa

Rappresentazione floating point (precisione semplice)

IEEE 754 floating-point standard

s esponente + bias parte significativa 8 bit 23 bit

parte significativa della mantissa normalizzata segno del numero 1 bit rappresentazione segno + modulo bias = 127 (to bias ~ influenzare) biased exponent / biased notation 0111 1111 2 = 127 rappresentazione senza segno

N = (-1)s^ × (1+ 0. parte significativa) × 2 esponente

0111 1110 2 = 26 + 25 + 24 + 23 + 22 + 21 = 126

= (-1)^0 × (1+ 0. 0) × 2 126-127 = 1.0 × 2 -

0111 1110 2 = 26 + 25 + 24 + 23 + 22 + 21 = 126

= (-1)^1 × (1+ 0. 11) × 2 126-127 = - 1.1 1 × 2 –

Overflow e Underflow

Quali numeri si possono rappresentare con la notazione introdotta?

L’ overflow avviene quando l’esponente è troppo grande e non è più rappresentabile con gli 8 bit assegnati. Il valore piu' grande possibile sarebbe:

1111 1111 2 – 127 10 =( 2^8 – 1) – 127 10 = 255 –127 = 128

In realtà l’esponente 1111 1111 2 viene riservato per indicare situazioni anomale. Quindi

  • il più grande esponente utilizzabile è 127.

Si può verificare anche la situazione opposta ( undeflow ): l’esponente diviene “troppo piccolo”. Il piu' piccolo valore rappresentabile sarebbe

0000 0000 2 – 127 10 = – 127 10

ma anche in questo caso la rappresentazione 0000 0000 2 viene riservata alla rappresentazione dello zero, quindi

  • il più piccolo esponente utilizzabile è -126.

rappresenta lo zero (N.B.: non c’e’una forma normale per lo zero)

Rappresentazione floating point (doppia precisione)

s esponente + 1023 parte significativa - inizio 11 bit 20 bit

continuazione parte significativa 32 bit

Quale è la rappresentazione in doppia precisione del numero

3 / 4 = 11 2 × 2 –2?

112 × 2 –2 = 1.1 2 × 2 –

–1 + 1023 = 1022 = 1024 –2 = 2^10 – 2

Arrotondamento

Puo’esserci arrotondamento solo se nelle operazioni intermedie il numero delle cifre memorizzate e’superiore a quello definitivo.

Esempio. (Continuiamo a supporre di non poter memorizzare più di 4 cifre)

1.557 × 10 -4 + 1.983 × 10 -

0.015 57 × 10 - 1.983 × 10 -


1.998 57 × 10 -

Risultato arrotondato: 1.999 × 10 -

Troncando prima di sommare si avrebbe:

0.015 × 10 - 1.983 × 10 -


1.998 × 10 -

Osservazione: l’arrotondamento può richiedere un’ulteriore normalizzazione.

Esempio. 9.9995 × 10 2 = 10.000 × 10 2 = 1.000 × 10 3

Bit di Bit diguardia arrotondamento

Esempio con numeri binari 1.000 × 2 -1^ + - 1.110 × 2 -

Passo 1. Portiamo i due numeri allo stesso esponente scegliendo l’esponente più grande tra i due ( in questo caso -1 ).

1.000 × 2 -1^ + - 0.111 × 2 -

Passo 2. Sommiamo le mantisse.

1.000 + (-0.111) = 0.

Passo 3. Normalizziamo (controllando overflow o underflow)

0.001 × 2 –1 = 1.000 × 2 -

Passo 4. Arrotondiamo (e se necessario normalizziamo nuovamente).

1.000 × 2 –

( in questo caso non c’è nulla da fare )

==============================================

Osservazione. Si considerino 1.001 × 2 0 e - 1.111 × 2 –2^ e si supponga di non poter memorizzare piu' di 4 cifre (in questo esempio non consideriamo i bit di guardia e di arrotondamento)

esponente comune 2 : 1.001 × 2 0 - 0.01111× 2 0

esponente comune –2 : 100.1 × 2 -2^ - 1.111 × 2 –

Dopo l'allineamento, nel primo caso viene trascurato 2 –5^ mentre

nel secondo caso si trascura 2 –4^ + 2 –.

Moltiplicazione di numeri in virgola mobile

Esempio (base 10)

1.110 × 10 10 × 1.610 × 10 -

Supponiamo di non poter memorizzare più di 4 cifre.

  1. Calcoliamo l’esponente del risultato 10 + (-5) =5 (**)
  2. Moltiplichiamo le mantisse : 1.110 × 1.610 = 10.
  3. Normalizziamo il risultato: 10.212 × 105 = 1.0212 × 106
  4. Arrotondiamo se necessario: 1.0212 × 106 = 1.021 × 106
  5. Determiniamo il segno.

(**) Se si usa la notazione biased si deve tener conto del fatto che il valore memorizzato è stato incrementato della quantità bias

Ad esempio con bias =127 il valore memorizzato nei bit dedicati all’esponente sarebbe stato:

10 –5^ ⇒ 10 122 - 127

In questo caso, per ottenere l’esponente corretto del risultato bisogna calcolare (137 –127) + (122 – 127) + 127 = 132 (= 5 + 127)

Esempio con numeri binari 1.0000 × 2 -1^ × - 1.1100 × 2 -

0 0111 1110 000000000000000… … … …. 1 0111 1101 110000000000000… … … ….

Calcolo esponente.

0111 1110 126 + 0111 1101 125 = 251 –127 = 124

Nuovo esponente: 0111 1100

Calcolo prodotto mantisse.

1.000 × 1.110 = 1.000 ×

Normalizzazione e controllo overflow e/o underflow. è a posto

Arrotondamento.

0111 1100 1100000000… … … … .. Segno

1 0111 1100 1100000000… … … … ..