Rappresentare un valore reale in virgola fissa - formato ottimo ed errore
In questa pagina 5
Questa nota risponde alla domanda tipica dell'esame: "convertire questi numeri frazionari in valori esadecimali a quattro cifre, arrotondando e normalizzando nel modo più conveniente, cioè minimizzando l'errore introdotto". Il formato n.m è definito in Virgola fissa - formati n.m e normalizzazioneIn virgola fissa il processore fa aritmetica sugli interi (con segno) e il fattore di scalacostante per cui si moltiplica un valore reale per ottenere l'intero memorizzato $2^{m}$ resta sottinteso: il formato n.m dice che dei bit disponibili $n$ sono la parte intera (compreso il segno se il numero è con segno, S; nessun segno se U) e $m$ la parte frazionaria. Il valore è $\text{codice}/2^m$. Passare dal formato n.m al decimale, o viceversa, è il calcolo più frequente dell'esame: su 16 bit $\text{valore}=\text{codice}/2^m$, l'intervallo è $[0,2^n)$ (U) oppure $[-2^{n-1},2^{n-1})$ (S), la risoluzione è $2^{-m}$.Virgola fissa - formati n.m e normalizzazione →; qui si impara a sceglierlo.
Il metodo in cinque passi
Dato e la lunghezza di parolanumero di bit con cui il processore rappresenta un dato (16 negli esempi):
- Segno. Se conviene U (senza segnoil bit più alto di un numero in complemento a 2: 1 vuol dire negativo): il bit di segno risparmiato diventa un bit in più di precisione. Se serve S (con segno).
- Bit interi . Il minimo tale che entri nell'intervalloinsieme dei valori rappresentabili, tra il minimo e il massimo: per U ; per S (in S, perché c'è il segno).
- Bit frazionari : più è grande , più è piccolo l'errore, quindi si usa tutto quello che avanza.
- Codice ; per un negativo si scrive in complemento a 2codifica dei numeri con segno su W bit: si somma 2 elevato a W al valore negativo: . Poi si scrive in esadecimalesistema in base 16: ogni cifra vale 4 bit (4 bit per cifra).
- Errore (il valore rappresentato meno il vero): è positivo se il numero rappresentato è in eccesso; vale , e zero se è multiplo dinumero che si ottiene moltiplicando per un intero .
Perché non usare sempre molti bit frazionari? Perché i bit interii bit che stanno prima della virgola, segno compreso se il numero è con segno servono per non uscire dall'intervallo: con (1.15 S) il massimo è meno di 1 e un numero come non entra (andrebbe in overflowvalore fuori dall'intervallo rappresentabile: il codice si avvolge e il numero risulta sbagliato). Si prende il formato con meno bit interi che contiene il numero.
Esempi svolti (su 16 bit)
. Positivo e minore di 1: 0.16 U, . . Rappresentato ; .
. Negativo e in modulo minore di 1: 1.15 S, . ; in complemento a 2: . .
. Serve con (): 8.8 S. ; ; .
. Positivo, tra 1 e 2: 1.15 U. . è multiplo di , quindi (rappresentazione esatta).
e . : 1.15 U, , . : negativo tra e : 2.14 S, (stesso codice del positivo, ma letto in un altro formato!), .
e . : 4.12 U (), , errore nullo. : 2.14 S, , errore nullo.
(set 2026): 1.15 U, , . : 1.15 S, , . : 2.14 U, , . : 5.11 S, , .
Si nota che il segno del numero decide anche quanti bit frazionarii bit che stanno dopo la virgola: dopo la scalatura pesano 2 elevato a meno 1, meno 2, e così via restano: ha , solo .
Troncamento invece di arrotondamento
Il troncamento scarta i bit meno significativi senza arrotondare: l'errore è sempre dello stesso segno e può arrivare a , il doppio dell'errore massimo di arrotondamentosostituzione del valore con il più vicino rappresentabile. Per la modalità "troncamentoeliminazione dei bit meno significativi senza arrotondare del modulo" l'errore è per un positivo (si rappresenta meno del vero): per in Q7, , rappresentato , . Per un negativo il troncamento del modulo dà errore positivo: , (invece lo scarto dei bit in complemento a 2 equivale a e va verso ). L'arrotondamento ha errore medio nullo, il troncamento no: per questo si preferisce l'arrotondamento (e, nel caso "esattamente a metà", l'arrotondamento convergentearrotondamento al pari nel caso di valore esattamente a metà tra due codici: Architettura del repertorio di istruzioni - RISC, CISC, VLIW e indirizzamentoL'architettura è l'insieme delle risorse visibili al programmatore (istruzioni, modi di indirizzamento). RISC: poche istruzioni semplici, di uguale lunghezza, decodifica cablata, quasi tutte a 1 ciclo; CISC: molte istruzioni complesse, decodifica microprogrammata, più cicli. I DSP sono RISC "potenziati" (MAC, saturazione, barrel shifter, arrotondamento, VLIW, SIMD); i modi di indirizzamento tipici sono immediato, a registro, diretto, indiretto, con auto-incremento, circolare e a bit rovesciati (per la FFT).Architettura del repertorio di istruzioni - RISC, CISC, VLIW e indirizzamento →).
Quanti bit servono per un errore assegnato
Se è dato l'errore massimo (per esempio 50 ppmparti per milione: 50 ppm sono 5 per 10 alla meno 5 ) si cerca il minimo numero di bit totali tale che l'errore effettivo sia minore di . Il limite dà ( per ), ma l'errore effettivo dipende dal numero e quindi va verificato:
- : con , , (troppo); con , , ✓. U con : bit.
- : serve (U, ); con () e (supera ); con () e ✓. Quindi bit, anche se la formula avrebbe fatto sperare in : l'errore effettivo va sempre verificato.
- : multiplo di , quindi basta con errore nullo; servono bit (S, intervallo ): .
Morale: per i numeri "periodicicon infinite cifre ripetute dopo la virgola, come 1/3 in decimale e binario" in binario (, , ) servono molti bit; per i numeri con denominatore potenza di 2 (, ) bastano pochissimi bit.
Errori comuni
- Usare S per un positivo: si perde un bit.
- Scegliere senza controllare che entri nell'intervallo (soprattutto per il limite superiore di S, che è escluso).
- Dimenticare il complemento a 2 per i negativi (scrivere il modulo in esadecimale).
- Confondere il segno dell'errore: positivo se il valore rappresentato è più grande del vero.
Versione ripasso
- Metodo: U, S; minimo con (U) o (S); ; (negativi: complemento a 2); , se eccesso, .
- Esempi 16 bit: 0.16U ; 1.15S ; 8.8S ; 1.15U (esatto); : 1.15U , 2.14S ; 4.12U ; 2.14S .
- Troncamento: errore fino a (doppio) e con segno costante: si preferisce l'arrotondamento.
- Bit per un errore dato: da verificare sul valore: a 50 ppm: ; : (esatto).
- Errori: S per i positivi; fuori intervallo; modulo senza complemento a 2; segno dell'errore (Virgola fissa - formati n.m e normalizzazioneIn virgola fissa il processore fa aritmetica sugli interi (con segno) e il fattore di scalacostante per cui si moltiplica un valore reale per ottenere l'intero memorizzato $2^{m}$ resta sottinteso: il formato n.m dice che dei bit disponibili $n$ sono la parte intera (compreso il segno se il numero è con segno, S; nessun segno se U) e $m$ la parte frazionaria. Il valore è $\text{codice}/2^m$. Passare dal formato n.m al decimale, o viceversa, è il calcolo più frequente dell'esame: su 16 bit $\text{valore}=\text{codice}/2^m$, l'intervallo è $[0,2^n)$ (U) oppure $[-2^{n-1},2^{n-1})$ (S), la risoluzione è $2^{-m}$.Virgola fissa - formati n.m e normalizzazione →).
Esercizi su questo argomento
- Esercizio 1 · da reale a esadecimale con formato ottimo, errore e bit minimi (temi d'esame febbraio 2023, gennaio 2022 e settembre 2026)
- Esercizio 3 · calcolo di y = a·x + b e di un polinomio in virgola fissa a 32 bit (temi d'esame gennaio 2026 e settembre 2026)
- Esercizio 16 · filtro IIR del primo ordine, coefficienti, tempo di salita, taglio e risposta al gradino (temi d'esame gennaio 2025, febbraio 2025, settembre 2026 e 2004)
- Esercizio 19 · realizzazione in C di un filtro con coefficienti maggiori di 1 a virgola fissa (tema d'esame febbraio 2026)