Esercizio 2da esadecimale a decimale con formato assegnato (temi d'esame febbraio 2023, gennaio 2025, gennaio 2021 e luglio 2020)
In questa pagina 4
Testo (temi d'esame febbraio 2023 problema 2; gennaio 2025; gennaio 2021 problema P1.1; luglio 2020 problema 1). Si convertano in numeri decimali i seguenti valori esadecimali a 16 bit, applicando la normalizzazione indicata ( = con segno, = senza segno).
(a) in 2.14 U; in 1.15 S; in 3.13 U; in 7.9 S. (b) in 3.13 U; in 8.8 S; in 7.9 S. (c) in 4.12 U; in 3.13 S e in 3.13 U; in 8.8 S. (d) in 4.12 S; in 13.3 S; in 1.15 S; in 2.14 S; in 3.13 S.
Teoria usata: 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 →, Numeri binari e complemento a dueI processori lavorano con un numero fisso di bit $n$. I naturali vanno da $0$ a $2^n-1$; per i negativi si usa il complemento a due: $C_2(N)=2^n-N=\overline N+1$ (si invertono tutti i bit e si somma 1). Con $n$ bit rappresenta $-2^{n-1}\le N\le2^{n-1}-1$, ha un solo zero e unifica somma e sottrazione. Quando il risultato esce dall'intervallo c'è overflow; gli overflow intermedi si compensano se il risultato finale è rappresentabile. La lunghezza di parola non è l'accuratezza.Numeri binari e complemento a due →.
Metodo
Si legge il codice esadecimale come numero intero senza segno (da 0 a 65535). Se il formato è S e il bit più alto è 1 (cioè , prima cifra esadecimale da 8 a F) il numero è negativo: . Poi , con il numero dopo il punto del formato.
Svolgimento
(a)
- ; U: (più precisamente ).
- : ; .
- ; U: (lo stesso codice in S sarebbe negativo).
- : ; .
(b)
- (prima cifra 2: positivo): .
- : ; (esatto: ).
- : ; .
(c)
- ; 4.12 U: .
- . In 3.13 S: , . In 3.13 U: . Lo stesso codice dà due numeri molto diversi: senza il formato, il codice non ha significato.
- : in 8.8 S: (infatti come byte con segno).
(d)
- in 4.12 S: , .
- in 13.3 S: (positivo; bit frazionari, quindi precisione ).
- in 1.15 S: : (il più piccolo negativo, un LSB).
- in 2.14 S: .
- in 3.13 S: , .
Controllo
Il valore ottenuto deve cadere nell'intervallo del formato: per 2.14 U ✓ (); per 1.15 S ✓ (); per 3.13 U ✓ (); per 7.9 S ✓ ( e ); per 8.8 S ✓.
Errori comuni
- Leggere un codice con prima cifra come positivo in un formato S (o come negativo in U).
- Dividere per invece che per (si scambiano parte intera e parte frazionaria).
- Dimenticare che in S il segno fa parte di (1.15 S ha 15 bit frazionari, intervallo ).
- Convertire male l'esadecimale (per esempio ).
Versione ripasso
Testo. Convertire in decimale codici esadecimali a 16 bit con formato assegnato ( S/U) (febbraio 2023, gennaio 2025, gennaio 2021, luglio 2020).
- Metodo: intero; se S e sottrarre 65536; (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 →).
- Risultati:
ECCC2.14U ;99F01.15S ;80F03.13U ;A9BC7.9S ;2CA03.13U ;ABC08.8S ;CB337.9S ;4E194.12U ;9F683.13S e 3.13U ;EF008.8S ;BD134.12S ;6F9813.3S ;FFFF1.15S ;75232.14S ;85AA3.13S . - Errori: segno ignorato; al posto di ; intervallo non controllato (Numeri binari e complemento a dueI processori lavorano con un numero fisso di bit $n$. I naturali vanno da $0$ a $2^n-1$; per i negativi si usa il complemento a due: $C_2(N)=2^n-N=\overline N+1$ (si invertono tutti i bit e si somma 1). Con $n$ bit rappresenta $-2^{n-1}\le N\le2^{n-1}-1$, ha un solo zero e unifica somma e sottrazione. Quando il risultato esce dall'intervallo c'è overflow; gli overflow intermedi si compensano se il risultato finale è rappresentabile. La lunghezza di parola non è l'accuratezza.Numeri binari e complemento a due →).