soluzione degli esercizi sulle codifiche numeriche - Politecnico di ...
soluzione degli esercizi sulle codifiche numeriche - Politecnico di ...
soluzione degli esercizi sulle codifiche numeriche - Politecnico di ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
12BHD - Informatica - soluzioni Appen<strong>di</strong>ce B del quaderno <strong>di</strong> testo - v. 1.05<br />
Esercizio 1<br />
Effettuare i seguenti cambiamenti <strong>di</strong> co<strong>di</strong>fica su numeri naturali:<br />
• 12310 = x2<br />
• 0111012 = x10<br />
• 2310 = x5<br />
• 1235 = x10<br />
• 12310 = xH<br />
• A1H = x10<br />
• 91H = xQ<br />
• 12310 = xBCD<br />
• 10010110BCD = x10<br />
• 10100110BCD = x10<br />
• 10010110BCD = x2<br />
[ 11110112 ]<br />
[ 2910 ]<br />
[ 435 ]<br />
[ 3810 ]<br />
[ 7B16 ]<br />
[ 16110 ]<br />
[ 2218 ]<br />
[ 000100100011BCD ]<br />
[ 9610 ]<br />
[ impossibile: 1010 non è una cifra valida in BCD ]<br />
[ 11000002 ]<br />
Esercizio 2<br />
Effettuare i seguenti cambiamenti <strong>di</strong> co<strong>di</strong>fica su numeri relativi considerando numeri binari da 6 bit:<br />
• +1310 = xMS<br />
• -1310 = xMS<br />
• +3210 = xMS<br />
• -3210 = xMS<br />
• +1310 = xCA2<br />
• -1310 = xCA2<br />
• +3210 = xCA2<br />
• -3210 = xCA2<br />
• 010001MS = x10<br />
• 010001CA2 = x10<br />
• 100001MS = x10<br />
• 100001CA2 = x10<br />
1<br />
[ 001101MS ]<br />
[ 101101MS ]<br />
[ non rappresentabile in co<strong>di</strong>fica MS su 6 bit ]<br />
[ non rappresentabile in co<strong>di</strong>fica MS su 6 bit ]<br />
[ 001101CA2 ]<br />
[ 110011CA2 ]<br />
[ non rappresentabile in co<strong>di</strong>fica CA2 su 6 bit ]<br />
[ 100000CA2 ]<br />
[+1710 ]<br />
[+1710 ]<br />
[−110 ]<br />
[−3110 ]
12BHD - Informatica - soluzioni Appen<strong>di</strong>ce B del quaderno <strong>di</strong> testo - v. 1.05<br />
Esercizio 3<br />
Effettuare le seguenti operazioni considerando numeri binari da 6 bit ed in<strong>di</strong>cando sempre se si è<br />
verificato errore e <strong>di</strong> quale tipo:<br />
• (binario puro) 010101 + 000111 [ 011100, ok ]<br />
• (binario puro) 010101 + 010001 [ 100110, ok ]<br />
• (binario puro) 010101 - 000111 [ 001110, ok ]<br />
• (binario puro) 010101 - 011001 [ 111100, overflow: borrow su MSB ]<br />
• (CA2) 010101 + 000111 [ 011100, ok ]<br />
• (CA2) 010101 + 010001 [ 100110, overflow: cambio <strong>di</strong> segno ]<br />
• (CA2) 010101 - 000111 [ 001110, ok ]<br />
• (CA2) 010101 - 011001 [ 111100, ok ]<br />
• (binario puro) 010101 ≪ 1 [ 101010, ok ]<br />
• (binario puro) 010101 ≪ 2 [ 010100, overflow: scarto <strong>di</strong> un bit a 1 ]<br />
• (binario puro) 110101 ≫ 1 [ 011010, troncamento: scarto <strong>di</strong> un bit a 1 ]<br />
• (CA2) 001101 ≪ 1 [ 011010, ok ]<br />
• (CA2) 010101 ≪ 1 [ 101010, overflow: cambio <strong>di</strong> segno ]<br />
• (CA2) 010101 ≪ 2 [ 010100, overflow: cambio <strong>di</strong> segno al primo passo ]<br />
• (CA2) 110101 ≫ 1 [ 111010, troncamento: scarto <strong>di</strong> un bit a 1 ]<br />
Esercizio 4<br />
In<strong>di</strong>care la precisione assoluta e relativa dei seguenti numeri decimali:<br />
n10 = 15 30 15.0 30.0 15.4 15.44<br />
ε10(n)= [ 1 ] [ 1 ] [ 0.1 ] [ 0.1 ] [ 0.1 ] [ 0.01 ]<br />
η10(n)= [ 6.7% ] [ 3.3% ] [ 0.67% ] [ 0.33% ] [ 0.65% ] [ 0.065% ]<br />
Esercizio 5<br />
In<strong>di</strong>care la precisione assoluta binaria e decimale dei seguenti numeri binari:<br />
n2 = 0 10 1.1 1.01 1.001 1.0001<br />
ε2(n)= [ 1 ] [ 1 ] [ 1/2 ] [ 1/4 ] [ 1/8 ] [ 1/16 ]<br />
ε10(n)= [ 1 ] [ 1 ] [ 1 ] [ 1 ] [ 1 ] [ 0.1 ]<br />
Esercizio 6<br />
Effettuare le seguenti conversioni in binario puro con la precisione decimale in<strong>di</strong>cata:<br />
• 0.910 = x2 (ε=0.1) [ 0.11102 ]<br />
• 12.510 = x2 (ε=0.01) [ 1100.10000002 ]<br />
• 12.6310 = x2 (ε=0.001) [ 1100.10100001012 ]<br />
2
12BHD - Informatica - soluzioni Appen<strong>di</strong>ce B del quaderno <strong>di</strong> testo - v. 1.05<br />
Esercizio 7<br />
Effettuare la seguenti conversioni mantenendo la stessa precisione assoluta:<br />
• 10.0112 = x10<br />
• 10.01102 = x10<br />
• 0.01010010002 = x10<br />
[ 210 ]<br />
[ 2.310 ]<br />
[ 0.32010 ]<br />
Esercizio 8<br />
Discutere applicabilità, vantaggi e svantaggi delle seguenti <strong>co<strong>di</strong>fiche</strong> nel caso <strong>di</strong> un sensore <strong>di</strong>gitale<br />
<strong>di</strong> temperatura che deve operare nel campo -20 ◦ . . . +44 ◦ C:<br />
• numeri da 6 bit in binario puro, MS, CA2<br />
• numeri da 8 bit in binario puro, MS, CA2<br />
[ L’<strong>esercizi</strong>o richiede <strong>di</strong> co<strong>di</strong>ficare 65 temperature <strong>di</strong>verse (20 negative, 44 positive e la temperatura<br />
zero).<br />
Poiché con numeri da 6 bit si possono co<strong>di</strong>ficare al più 2 6 (ossia 64) oggetti <strong>di</strong>versi, ne consegue che<br />
non si può usare nessuna co<strong>di</strong>fica basata su 6 bit.<br />
Le tre <strong>co<strong>di</strong>fiche</strong> su 8 bit possono invece tutte essere teoricamente utilizzate perché in grado <strong>di</strong> rappresentare<br />
2 8 (ossia 256) oggetti <strong>di</strong>versi.<br />
La co<strong>di</strong>fica in complemento a due su 8 bit è quella più <strong>di</strong>retta perché è in grado <strong>di</strong> rappresentare tutti<br />
i numeri interi relativi nell’intervallo:<br />
−2 8−1 ...+2 8−1 − 1 ossia − 128...+127<br />
Le operazioni <strong>di</strong> co<strong>di</strong>fica e deco<strong>di</strong>fica sono però complesse ed il loro prezzo è più facilmente giustificabile<br />
se poi si dovessero svolgere dei calcoli <strong>sulle</strong> temperature (es. calcolo della me<strong>di</strong>a).<br />
La co<strong>di</strong>fica in modulo e segno su 8 bit è in grado <strong>di</strong> rappresentare tutti i numeri interi relativi<br />
nell’intervallo:<br />
−2 8−1 − 1...+2 8−1 − 1 ossia − 127...+127<br />
Le operazioni <strong>di</strong> co<strong>di</strong>fica e deco<strong>di</strong>fica sono semplici ma si deve fare attenzione al doppio zero (+0 e<br />
−0). Nel caso si debbano svolgere dei calcoli <strong>sulle</strong> temperature (es. calcolo della me<strong>di</strong>a) allora è da<br />
sconsigliare perché le operazioni aritmetiche su questa co<strong>di</strong>fica spono complesse.<br />
La co<strong>di</strong>fica in binario puro su 8 bit è in grado <strong>di</strong> rappresentare tutti i numeri interi nell’intervallo:<br />
0...2 8−1 ossia 0...255<br />
Non può quin<strong>di</strong> essere usata <strong>di</strong>rettamente per rappresentare le temperature in<strong>di</strong>cate ma sarebbe<br />
necessario effettuare una co<strong>di</strong>fica “eccesso 20” ossia:<br />
n(T)=T + 20<br />
ove T è la temperatura registrata e n il numero che la rappresenta. A seguito <strong>di</strong> questa co<strong>di</strong>fica anche<br />
le eventuali operazioni aritmetiche che si dovessero svolgere <strong>di</strong>venterebbero semplici (perché svolte<br />
su numeri interi positivi). ]<br />
3
12BHD - Informatica - soluzioni Appen<strong>di</strong>ce B del quaderno <strong>di</strong> testo - v. 1.05<br />
Esercizio 9<br />
Spiegare qual è il potenziale vantaggio <strong>di</strong> una co<strong>di</strong>fica BCD per numeri reali frazionari rispetto ad<br />
una co<strong>di</strong>fica floating-point.<br />
[ La co<strong>di</strong>fica BCD permette <strong>di</strong> co<strong>di</strong>ficare in modo esatto i numeri decimali frazionari, senza alcun<br />
errore <strong>di</strong> rappresentazione. ]<br />
Esercizio 10<br />
Convertire il numero decimale −3.25 in binario con le <strong>co<strong>di</strong>fiche</strong> specificate, in<strong>di</strong>cando anche la<br />
precisione assoluta decimale del numero binario risultante:<br />
• binario fixed-point CA2 4I + 4F [ 1100 1100,ε=10 −1 ]<br />
• binario floating-point IEEE-754 SP [ 1 10000000 10100000000000000000000,ε=10 −6 ]<br />
Esercizio 11<br />
Per ciascuna delle seguenti <strong>co<strong>di</strong>fiche</strong> binarie, in<strong>di</strong>care l’intervallo <strong>di</strong> valori numerici rappresentabile<br />
(in modo naturale, senza particolari ipotesi o accorgimenti) e la precisione assoluta:<br />
• binario puro su 6 bit [ 0...63,ε=1 ]<br />
• modulo e segno su 6 bit [−31...+31,ε=1 ]<br />
• complemento a due su 6 bit [−32...+31,ε=1 ]<br />
• BCD su 12 bit [ 0...999,ε=1 ]<br />
• fixed-point 6I + 3F [ 0...63.875,ε10 = 1,ε2 = 1/8 ]<br />
• fixed-point complemento a due 6I + 3F [−32...+31.875,ε10 = 1,ε2 = 1/8 ]<br />
• co<strong>di</strong>ce eccesso 16 su 8 bit [ −16...239,ε=1 ]<br />
Esercizio 12<br />
In<strong>di</strong>care le basi in cui valgono le seguenti uguaglianze:<br />
• 201x+ 33x = 351x<br />
• 201z− 33z = 135z<br />
Esercizio 13<br />
Convertire in formato IEEE-754 SP i seguenti numeri decimali:<br />
[ nessuna base ]<br />
• −7 [ 1 10000001 11000000000000000000000 ]<br />
• +3.54·10 −3 [ 0 01110110 11001111111111101011000 ]<br />
4<br />
[ 7 ]
12BHD - Informatica - soluzioni Appen<strong>di</strong>ce B del quaderno <strong>di</strong> testo - v. 1.05<br />
Esercizio 14<br />
Convertire in decimale i seguenti numeri binari in formato IEEE-754 SP, esprimendo il risultato in<br />
forma esponenziale ingegneristica con la stessa precisione del numero binario:<br />
• 01101100001010000000000000000000 [+812.3981·10 24 ]<br />
Il MSB rappresenta il segno: il numero è quin<strong>di</strong> positivo. Gli 8 bit successivi al MSB rappresentano<br />
l’esponente (in co<strong>di</strong>fica “eccesso 127”):<br />
110110002− 12710 = 216−127=89<br />
I restanti 23 bit rappresentano la parte frazionaria del modulo della mantissa (che ha la parte<br />
intera “1.” sottintesa), quin<strong>di</strong> il numero co<strong>di</strong>ficato è:<br />
+1.01012· 2 89 = +101012· 2 85<br />
= +21·2 85<br />
= +812,398,150,781,030,805,402,550,272<br />
= +812.3981·10 24<br />
Si noti che, trattandosi <strong>di</strong> un numero in co<strong>di</strong>fica IEEE 754 SP, il risultato è stato scritto con 7<br />
cifre significative. Inoltre, essendo stata richiesta la rappresentazione in formato esponenziale<br />
ingegneristico, si è scelta come esponente decimale il massimo multiplo <strong>di</strong> tre che permette <strong>di</strong><br />
avere una parte intera non nulla.<br />
• 10000111100000000000000000000000 [ −192.5930·10 −36 ]<br />
Il MSB rappresenta il segno: il numero è quin<strong>di</strong> negativo. Gli 8 bit successivi al MSB rappresentano<br />
l’esponente (in co<strong>di</strong>fica “eccesso 127”):<br />
000011112− 12710 = 15−127=−112<br />
I restanti 23 bit rappresentano la parte frazionaria del modulo della mantissa (che ha la parte<br />
intera “1.” sottintesa), quin<strong>di</strong> il numero co<strong>di</strong>ficato è:<br />
−1.02· 2 −112 = −2 −112<br />
= −1.925929944·10 −34<br />
= −192.5930·10 −36<br />
Si noti che, trattandosi <strong>di</strong> un numero in co<strong>di</strong>fica IEEE 754 SP, il risultato è stato scritto con 7<br />
cifre significative. Inoltre, essendo stata richiesta la rappresentazione in formato esponenziale<br />
ingegneristico, si è scelta come esponente decimale il massimo multiplo <strong>di</strong> tre che permette <strong>di</strong><br />
avere una parte intera non nulla.<br />
• 01111111100000000000000000000000 [ +∞ ]<br />
Poiché la parte frazionaria della mantissa (i 23 bit meno significativi della co<strong>di</strong>fica) è nulla<br />
e l’esponente co<strong>di</strong>ficato (gli 8 bit successivi al MSB) ha il valore massimo possibile, si tratta<br />
<strong>di</strong> una delle <strong>co<strong>di</strong>fiche</strong> “speciali” IEEE 754, che corrisponde ad infinito. Guardando il segno<br />
(rappresentato dal MSB) si può concludere che si tratta della co<strong>di</strong>fica +∞.<br />
5