Esercizi
(virgola fissa, virgola mobile IEEE 754, Assembly MIPS)
Francesca Voltolini e Luca Abeni
Virgola fissa
Convertire in binario i seguenti numeri utilizzando la
notazione in virgola fissa:
●
●
●
23.625 → 10111.101
15.375 → 01111.011
121.125 → 1111001.001
Convertire in decimale i seguenti numeri in virgola fissa:
●
1010.101 → 10.625
●
101.110 → 5.75
●
11001.001 → 25.25
Virgola mobile IEEE 754
Esprimere i seguenti numeri decimali in codifica binaria
secondo lo standard IEEE 754:
●
-4.5
●
0.5
●
-30.375
Standard IEEE 754:
● 1 bit di segno
● 8 bit per l'esponente (rappresentato in complemento a 2
eccesso 127)
● 23 bit per la mantissa
Virgola mobile IEEE 754 - soluzione
-4.5
➢
Segno: 1
➢
Mantissa:
➢
➢
4.510 = 100.12
➢
Normalizzazione: 100.12 → 1.0012 * 22
Esponente
➢
➢
(2+127)10 = 100000012
IEEE 754: 1 10000001 00100000000000000000000
Virgola mobile IEEE 754 - soluzione
0.5
➢
Segno: 0
➢
Mantissa:
➢
➢
0.510 = 0.12
➢
Normalizzazione: 0.12 → 1.02 * 2-1
Esponente
➢
➢
(-1+127)10 = 011111102
IEEE 754: 0 01111110 00000000000000000000000
Virgola mobile IEEE 754 - soluzione
-30.375
➢
Segno: 1
➢
Mantissa:
➢
➢
-30.37510 = 11110.0112
➢
Normalizzazione: 11110.0112 → 1.11100112 * 24
Esponente
➢
➢
(4+127)10 = 100000112
IEEE 754: 1 10000011 11100110000000000000000
Assembly MIPS
Tradurre la seguente funzione C in Assembly MIPS.
NB: la funzione calcola la potenza di 2 in modo ricorsivo
int PotenzaDiDue(int n)
{
if(n<1)
return 1;
else
return (2*PotenzaDiDue(n-1));
}
Soluzione: potenza2-rec.s
Assembly MIPS
Tradurre la seguente funzione C in Assembly MIPS
int PotenzaDiDue(int n)
{
NB: la funzione calcola la potenza di
if(n==0)
2 in modo iterativo
return 1;
else
{
int ret = 1;
Soluzione: potenza2-iter.s
for (int i=0; i<n; i++)
ret=ret*2;
return ret;
}
}
Assembly MIPS
Tradurre la seguente funzione C in Assembly MIPS
int MioFib(int n)
{
if(n<2)
return (1);
else
return (3*MioFib(n-1)-MioFib(n-2));
}
Soluzione: fibo.s
Scarica

Esercizi