20.05.2013 Views

soluzione degli esercizi sulle codifiche numeriche - Politecnico di ...

soluzione degli esercizi sulle codifiche numeriche - Politecnico di ...

soluzione degli esercizi sulle codifiche numeriche - Politecnico di ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!