Note ipersintetiche di LPC: i numeri di macchina, singola precisione, opzione bias, chopping, rounding.
Note:
Il seguente file presenta gli appunti personali, al momento non rivisitati od ampliati, della seconda lezione di Laboratorio di Programmazione e Calcolo. Potrebbero esser presenti refusi od affermazioni incorrette.
-Tra i separatori [-x——-x-] ci sono aggiunte personali, tratte dal web, inserite per chiarire alcune definizioni a livello tecnico.
La macchina assegna ad ogni numero reale una certa mantissa a seconda dello spazio dedicato e le rappresentazioni in essa non risultano esser continue, ossia esse sono discrete a causa delle approssimazioni dato che è impossibile rappresentare un numero reale con uno spazio in bit limitato. Ciò comporta errori di calcolo.
I numeri di macchina sono la rappresentazione interna dei numeri all’interno di un computer. Ogni sistema informatico utilizza una certa quantità di bit – ad esempio 32, 64, 128 bit – per rappresentare i numeri. A seconda della quantità di bit disponibili, si possono rappresentare differenti gamme di numeri e precisioni.
Per rappresentare i numeri di macchina si utilizza il sistema floating point normalizzato
L’insieme è definito come:
La normalizzazione è introdotta grazie alla limitazione su
Esempio:
Se
Se
Si ha un overflow con conseguente interruzione di esecuzione quando il numero inserito in macchina risulta esser maggiore in modulo di
Si ha un underflow quando il numero inserito in macchina risulta esser minore in modulo di
NaN significa Not a Number e corrisponde alle forme indeterminate riscontrate nel calcolo dei limiti in analisi.
Fissati N e t, in un sistema floating point si hanno N-t-1 bit per l’esponente con segno.
Esempio: Se si ha un byte a disposizione per la rappresentazione in fp in base 2, si potrebbe scegliere di avere una mantissa ed esponente di tre cifre adoperando poi i due bit per i rispettivi segni. In tal caso si ha come mantissa massima
SINGOLA PRECISIONE E DOPPIA PRECISIONE PER LA RAPPRESENTAZIONE BINARIA β=2
Lo standard IEEE, Institute of Electrical and Electronic Engeneers, prescrive N=32bit=4byte (t=23bit + 8bit per l’esponente) per la singola precisione ed N=64bit=8byte (t=52bit + 11bit per l’esponente) per la doppia precisione.
-x———x-
cosa si intende per BIAS:
Nel contesto della rappresentazione flottante, come il formato IEEE 754, il bias è utilizzato per rappresentare gli esponenti dei numeri in modo che possano includere valori negativi. Il bias è una tecnica per semplificare la rappresentazione di numeri con segno e permette di includere sia valori positivi che negativi in un formato standardizzato.
Esempio:
Rappresentazione dell’esponente: Supponiamo di avere un formato di rappresentazione a virgola mobile che utilizza 8 bit per l’esponente. Se vogliamo rappresentare esponenti che vanno da -127 a +128, possiamo utilizzare un bias di 127. In questo modo:
-Un esponente di 0 sarà rappresentato come (127) (0 + 127).
-Un esponente di -1 sarà rappresentato come (126) (-1 + 127).
-Un esponente di +1 sarà rappresentato come (128) (+1 + 127).
Vantaggi: Utilizzando il bias, possiamo rappresentare esponenti con valori negativi senza dover utilizzare bit aggiuntivi per segnare il segno dell’esponente.
Applicazioni: Il concetto di bias è utilizzato non solo nelle rappresentazioni a virgola mobile, ma può essere utilizzato anche nella codifica di altre strutture dati, come per esempio nelle codifiche di interi.
-x—————x-
La singola precisione in C++ viene di norma utilizzata per le variabili di tipo float.
Poiché sono disponibili 8bit per l’esponente si potrebbe utilizzare un bit per il segno e sette bit per il numero in modo da ottenere
La doppia precisione in C++ viene di norma utilizzata per le variabili di tipo double.
Con gli 11bit a disposizione per l’esponente si ha
Per L ed U non vi è alcuno standard universalmente riconosciuto, in generale si predilige l’opzione bias.
In
In
APPROSSIMAZIONE PER TRONCAMENTO (CHOPPING) ED ARROTONDAMENTO(ROUNDING).
Si definisce l’applicazione
I numeri con modulo maggiore di
Se
Se
Chopping:
Rounding: agisce come il chopping se e solo se
ESERCIZIO:
Posto β=2 e t=3, come viene rappresentato