1
Tutorato di architettura degli elaboratori
Rappresentazione dei numeri
Andrea Gasparetto – andrea.gasparetto@unive.it
Esercizi Conversione Binario -> Decimale
1405 = 1 x 52 + 4 x 51 + 0 x 50 = 4510
74368 = 7 x 83 + 4 x 82 + 3 x 81 + 6 x 80 = 7 x 512 + 4 x 64 + 3 x 8 + 6 = 387010
10111012 = 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 + 1 x 22 + 0 x 20 = 9310
3289 = 3 x 92 + 2 x 91 + 8 x 90 = 26910
Esercizi Conversione Decimale -> Base B
10 => 2
127 1
63 1
31 1
15 1
7 1
3 1
1 1
0 //
12710 = 11111112
10 => 5
127 2
25 0
5 0
1 1
0 //
12710 = 10022
10 => 8
127 7
15 7
1 1
0 //
2 12710 = 1778
Conversione da Base b a Base d (multipli di 2)
2 => 8
011 101 010 111
3 5 2 7
2 => 16
A F 5 9
1010 1111 0101 1001
8 => 2
7 7 2 1 6
111 111 010 001 110
Somma numeri naturali
183 + 63 = 246, nessun overflow
1 1 1 1 1 1
1 0 1 1 0 1 1 1 +
0 0 1 1 1 1 1 1 =
1 1 1 1 0 1 1 0
137 + 241 = 378, OVERFLOW
1 1
1 0 0 0 1 0 0 1 +
1 1 1 1 0 0 0 1 =
0 1 1 1 1 0 1 0
Se consideriamo queste somme come somme di numeri rappresentati in complemento a 2, otteniamo le operazioni
(-73) + 63 = -10
0 0 1 1 1 1 1 1
1 0 1 1 0 1 1 1 +
0 0 1 1 1 1 1 1 =
1 1 1 1 0 1 1 0
3 Per verificare se si è verificato un overflow, è sufficiente osservare se gli ultimi due riporti sono concordi. In questo caso, il penultimo riporto è 0 (0 + 0 + 1 dato dal riporto precedente) e il secondo è 0 (1 + 0 + 0 dato dal riporto precedente). Quindi non si è verificato un overflow.
1 0 0 0 0 0 0 1
1 0 0 0 1 0 0 1 +
1 1 1 1 0 0 0 1 =
0 1 1 1 1 0 1 0
Nel secondo caso invece, il penultimo riporto è 0, mentre l’ultimo è 1. Abbiamo quindi due riporti non concordi e di conseguenza un overflow. Alternativamente, è possibile osservare il segno degli addendi (entrambi negativi) e il segno del risultato (positivo). Se si sommano due numeri negativi, non è possibile ottenere come risultato un numero positivo, e quindi l’operazione è fallita.
Esercizi Complemento a due (8 bit)
010 = 000000002
10010 = 011001002 => C2 => 011001002
100 0
50 0
25 1
12 0
6 0
3 1
1 1
0 //
13110 => 100000112 => non rappresentabile in complemento a 2
131 1
65 1
32 0
16 0
8 0
4 0
2 0
1 1
0 //
-12810 => 100000002 => C1 => 01111111 => C2 => 10000000
128 0
64 0
32 0
16 0
8 0
4 0
2 0
1 1
4
0 //
-5010 => 001100102 => C1 => 11001101 => C2 => 11001110
50 0
25 1
12 0
6 0
3 1
1 1
0 //
Esercizi Numeri Virgola Fissa
25,12510 => Binario, 8 + 8
25 1
12 0
6 0
3 1
1 1
0 //
2510 = 000110012
Residuo X2 Cifre
0.125 0.250 0
0.250 0.500 0
0.500 1.000 1
0 / /
0,12510 = 0,0012
25,12510 = 00011001,001000002
-63,7510 => Binario 8 + 8
63 1
31 1
15 1
7 1
3 1
1 1
0 //
6310 = 001111112
Residuo x2 Cifre
5
0.75 1.50 1
0.50 1.0 1
0 / /
63,7510 = 00111111,110000002 => C1 => 11000000,00111111 => C2 => 11000000,01000000
-35,62510 => Binario 8 + 8
35 1
17 1
8 0
4 0
2 0
1 1
0 //
3510 => 001000112
Residuo X2 Cifre
0.625 1.25 1
0.25 0.5 0
0.5 1.0 1
0 / /
0.62510 => 0.1012
35,62510 = 00100011,101000002 => C1 => 11011100,01011111 => C2 => 11011100,01100000 => -35,625
Esercizi Numeri Virgola Mobile
Esercizio 1
A = 21345 = 2 x 53 + 1 x 52 + 3 x 51 + 4 x 50 = 29410 = 1001001102
B = -30124 = -(3 x 43 + 0 x 42 + 1 x 41 + 2 x 40) = -19810 = 110001102
294 147 73 36 18 9 4 2 1
0 1 1 0 0 1 0 0 1
198 99 49 24 12 6 3 1
0 1 1 0 0 0 1 1
A = 100100110 = 1.00100110 x 28 SA = 0
EA = 8 + 127 = 13510 = 100001112
MA = 1.00100110…
0 10000111 00100110000000000000000
B = 11000110 = 1.1000110 x 27 SB = 1
EB = 7 + 127 = 13410 = 100001102
MB = 1.1000110…
1 10000110 10001100000000
6 1 _ Allineamento degli esponenti: poiché gli esponenti sono uguali, non serve allinearli
MA = 1.00100110 x 28
MB = 1.10001100 x 27 => 0.11000110 x 28
2 _ Mantisse espresse in complemento a 2: poiché B è un numero negativo, devo complementarlo a 2 MB negativo quindi lo complemento a 2 => 1.0011101
3 _ Aggiungo il segno alle mantisse MA = 01.00100110
MB = 10.11000110
4 _ Sommo mantisse
0 1 . 0 0 1 0 0 1 1
1 1 . 0 0 1 1 1 0 1
1 0 0 . 0 1 1 0 0 0 0
MC = 00.0110000 x 28 5 _ Normalizzo MC = 1.1 x 26
NB: in questo caso l’1 che appare all’inizio del risultato della somma NON rappresenta un overflow. Tale numero infatti viene automaticamente escluso dall’operazione mod 2n, operazioni finale nelle somme in complemento a 2. Tali somme infatti sono definite come: (N1 + (2n – N2)) mod 2n.
Risultato
SC = 0
EC = 6 + 127 = 13310 = 100001012
M = 1000…0
Esercizio 2
A = 2.154 x 82 = 215.48 = 2 x 82 + 1 x 8 + 5 + 4 x 8-1 = 128 + 8 + 5 + 0.5 = 141,510
B = -3.572 x 82 = -357.28 = -(3 x 82 + 5 x 8 + 7 + 2 x 8-1) = -(192 + 40 + 7 + 0,35) = -239,2510
A = 141,510 = 10001101,12
SA = 0
MA = 1,00011011
7 EA = 127 + 7 = 13410 = 100001102
Quindi A = 0 10000110 00011011000000000000000
B = -239.2510 = 11101111,012
SB = 1
MB = 1,110111101
EB = 127 + 7 = 13410 = 100001102
Quindi B = 1 10000110 11011110100000000000000
1 _ Allineamento degli esponenti: poiché gli esponenti sono uguali, non serve allinearli
2 _ Mantisse espresse in complemento a 2: poiché B è un numero negativo, devo complementarlo a 2 MA = 1,000110110
MB = 0,001000011
3 _ Aggiungo il segno alle mantisse MA = 01,000110110 MB = 10,001000011
4 _ Somma delle mantisse
0 1 . 0 0 0 1 1 0 1 1 0 +
1 0 . 0 0 1 0 0 0 0 1 1 =
1 1 . 0 0 1 1 1 1 0 0 1
NB: Poiché il segno del risultato della somma è negativo devo complementare a 2
1 1 . 0 0 1 1 1 1 0 0 1
0 0 . 1 1 0 0 0 0 1 1 0 +
0 0 . 0 0 0 0 0 0 0 0 1 =
0 0 . 1 1 0 0 0 0 1 1 1 x 27
MC = 00,110001111 x 27 5 _ Normalizzazione MC = 1,10000111 x 26 Risultato
SC = 1
EC = 127 + 6 = 13310 = 100001012
MC = 1,10000111