A.A. 2016/17 Marco Tarini - Università dell'Insubria Università degli Studi dell’Insubria Dipartimento di Scienze Teoriche e Applicate Architettura degli elaboratori Numeri e aritmetica binaria Esercizi Marco Tarini Dipartimento di Scienze Teoriche e Applicate [email protected] Esercizio 1 Dato il numero 13710 convertirlo in base 2, 4, 8, 16. Architettura degli elaboratori -2- Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 1 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 1: soluzione Conversione a base 2 tramite l’algoritmo delle divisioni successive 13710 = 100010012 Architettura degli elaboratori -3- Aritemtica binaria - Esercizi Esercizio 1: soluzione La conversione a base 4 si può fare attraverso l’algoritmo delle divisioni successive, oppure a partire dalla rappresentazione in binario. 10 00 10 012= 20214 Architettura degli elaboratori -4- Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 2 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 1: soluzione La conversione a base 8 si può fare attraverso l’algoritmo delle divisioni successive, oppure a partire dalla rappresentazione in binario. 10 001 0012= 2118 Architettura degli elaboratori -5- Aritemtica binaria - Esercizi Esercizio 1: soluzione La conversione a base 16 si può fare attraverso l’algoritmo delle divisioni successive, oppure a partire dalla rappresentazione in binario. 1000 10012= 8916 Architettura degli elaboratori -6- Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 3 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 1: soluzione Prova: 100010012 = 1*20 + 1*23 + 1*27 = 1 + 8 + 128 = 137 20214 = 1*40 + 2*41 + 2*43 = 1 + 8 + 128 = 137 2118 = 1*80 + 1*81 + 2*82 = 1 + 8 + 128 = 137 8916 = 9*160 + 8*161 = 9 + 128 = 137 Architettura degli elaboratori -7- Aritemtica binaria - Esercizi Esercizio 2 Convertire in base 8 e 16 il numero 793210 Architettura degli elaboratori -8- Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 4 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 2: soluzione Conversione a base 8 e 16 tramite l’algoritmo delle divisioni successive Architettura degli elaboratori -9- Aritemtica binaria - Esercizi Esercizio 3 Convertire il numero 173748 in binario Architettura degli elaboratori - 10 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 5 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 3: soluzione 173748 = 001 111 011 111 1002 Architettura degli elaboratori - 11 - Aritemtica binaria - Esercizi Esercizio 4 Si consideri la rappresentazione in complemento a 2 su 11 bit. Quali interi possono essere rappresentati? Come è rappresentato -1024 ? Qual’è il numero rappresentato da N = 11111111111 ? Architettura degli elaboratori - 12 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 6 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 4 In complemento a 2 su 11 bit possono essere rappresentati i numeri da -211-1 a 211-1 -1, cioè da -1024 a +1023. -1024 corrisponde al minimo numero rappresentabile, che è sempre caratterizzato dalla presenza del termine negativo e dall’assenza di termini positivi. Quindi 10000000000 = -1*210 = -1024 Architettura degli elaboratori - 13 - Aritemtica binaria - Esercizi Esercizio 4 Nella stringa 11111111111 abbiamo il termine negativo e tutti i positivi. Quindi il valore denotato è 20+21+22+23+24+25+26+27+28+29–210 = 1+2+4+8+16+32+64+128+256+512-1024 = -110 NB: non ocorre fare la somma, perché la sommatoria delle potenze di 2 da 20 a 2n = 20 + 21 + 22 + ... + 2n = 2n+1-1 Alternativamente si può calcolare il complemento a 2, che è 00000000001 = +110 Architettura degli elaboratori - 14 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 7 A.A. 2016/17 Marco Tarini - Università dell'Insubria Dimostrazione che 20 + 21 + 22 + ... + 2n = 2n+1-1 Per induzione: 20 = 21 -1 20 + 21 = 22 -1 20 + 21 + 22 = 23 -1 Se 20 + 21 + 22 + ... + 2n = 2n+1-1 allora 20 + 21 + 22 + ... + 2n + 2n+1 = 2n+1 + 2n+1-1=2n+2-1 Architettura degli elaboratori - 15 - Aritemtica binaria - Esercizi Esercizio 5 Convertire in base 10 il numero in complemento a 2 N = 1100101 Convertire in base 10 il numero in complemento a 2 M = 0111111 Dato il numero in complemento a 2 P = 1010011, codificare -P, sempre in complemento a 2. Codificare il numero +13110 in complemento a 2, usando il minimo numero di bit Codificare il numero -27710 in complemento a 2, usando il minimo numero di bit Architettura degli elaboratori - 16 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 8 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 5: soluzione Convertire in base 10 il numero in complemento a 2 N = 1100101 1100101 = 20 + 22 + 25 – 26 = 1 + 4 + 32 – 64 = -2710 Convertire in base 10 il numero in complemento a 2 M = 0111111 0111111 = 20 + 21 + 22 + 23 + 24+ 25 = 1 + 2 + 4 + 8 + 16 + 32 = +6310 Dato il numero in complemento a 2 P = 1010011 codificare -P in complemento a 2. Complemento a 1 e incremento: 0101100 + 0000001 = 0101101 Verifica: 1010011 = 20 + 21 + 24 – 26 = 19 – 64 = -4510 0101101 = 20 + 22 + 23 + 25 = 4510 Architettura degli elaboratori - 17 - Aritemtica binaria - Esercizi Esercizio 5: soluzione Codificare il numero +13110 in complemento a 2, usando il minimo numero di bit Sono necessari 9 bit, con cui si può rappresentare [-28..+28-1] = [-256..+255] Con 8 si arriva al max a +127 Tramite algoritmo delle divisioni successive trovo la rappresentazione in binario naturale: 13110 = 10000011 Su 9 bit: +13110 = (0)10000011 Verifica: 20 + 21 + 27 = 1 + 2 + 128 = +13110 Architettura degli elaboratori - 18 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 9 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 5: soluzione Codificare il numero -27710 in complemento a 2, usando il minimo numero di bit Sono necessari 10 bit per rappresentare [-512..+511] La rappresentazione in cpl2 di -27710 corrisponde alla rappresentazione in binario naturale i 102410-27710=74710 Tramite algoritmo divisioni successive trovo: 74710 = 1011101011 747 373 1 186 1 93 0 46 1 23 0 11 1 5 1 2 1 1 0 0 1 Architettura degli elaboratori - 19 - Aritemtica binaria - Esercizi Esercizio 5: soluzione Codificare il numero -27710 in complemento a 2, usando il minimo numero di bit Soluzone alternativa: Tramite algoritmo divisioni successive trovo: 27710 = 100010101 Aggiungo il segno +27710 = (0) 100010101 Complemento e incremento: 1011101010 + 0000000001 = 1011101011 Verifica: 20 + 21 + 23 + 25 + 26+ 27 – 29 = 1 + 2 + 8 + 32 + 64 + 128 – 512 = -27710 Architettura degli elaboratori - 20 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 10 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 6 Si consideri la rappresentazione in complemento a 2 su 4 bit sommare -5 a -4 e dire se c’e’ overflow nella somma sommare +1 a -6 e dire se c’e’ overflow nella somma sommare +1 a +6 e dire se c’e’ overflow nella somma sommare -4 a -4 e dire se c’e’ overflow nella somma Architettura degli elaboratori - 21 - Aritemtica binaria - Esercizi Esercizio 6: soluzione Osservazione: in complemento a 2 su 4 bit si rappresentano i valori da -8 a +7 Sommare -5 a -4 e dire se c’e’ overflow nella somma Anche senza effettuare la somma sappiao che ci sarà un underfow nella somma, perché -5-4 = -9, che è minore del minimo valore rappresentabile con 4 bit. -5 = 1011, -4 = 1100 1011 + 1100 = (1)0111 overflow (e risultato è positivo e denota +7 anziché -9) Sommare +1 a -6 e dire se c’e’ overflow nella somma no overflow (operandi di segno diverso) 0001+1010=1011 che correttamente denota -8+3, cioè -5 Architettura degli elaboratori - 22 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 11 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 6: soluzione Sommare +1 a +6 e dire se c’e’ overflow nella somma 0001 + 0110 = 0111 no overflow, risultato corretto Sommare -4 a -4 e dire se c’e’ overflow nella somma -4 = 1100 1100 + 1100 = (1)1000 No overflow e risultato corretto Architettura degli elaboratori - 23 - Aritemtica binaria - Esercizi Esercizio 7 Dato il numero A = 1001001001 dire a quali interi in base 10 corrisponde nel caso esso rappresenti la codifica di un numero: in valore assoluto in modulo e segno in complemento a 2 Architettura degli elaboratori - 24 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 12 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 7: soluzione A = 1001001001 Numero rappresentato in valore assoluto 1×20 + 1×23 + 1×26 + 1×29 = 58510 Numero intero in modulo e segno segno = 1 negativo modulo = 10010012 = 1×20 + 1×23 + 1×26 = 7310 A = - 7310 Numero intero in complemento a 2 A = 20 + 23 + 26 -29 = 7310-51210 = - 43910 Architettura degli elaboratori - 25 - Aritemtica binaria - Esercizi Esercizio 8 Rappresentare in base 2 il numero f=0.52410 con precisione migliore di 10-4 Architettura degli elaboratori - 26 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 13 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 8: soluzione Possiamo usare l’algoritmo delle moltiplcazioni successive La precisione richiesta ci indica quando fermarci Poiche la sommatoria 2-n-1 + 2-n-2 + ... +2-n-k tende a 2-n per k ∞, dobbiano trovare n tale che 2-n sia minore della precisione richiesta. Nel nostro caso, 2-14 = circa 6 10-5 Architettura degli elaboratori Aritemtica binaria - Esercizi - 27 - Esercizio 8: soluzione 1 0.524 1.048 1 3 0.096 0.192 0 2 4 5 6 7 8 9 10 0.048 0.192 0.384 0.768 0.536 0.072 0.144 0.288 0.096 0.384 0.768 1.536 1.072 0.144 0.288 0 1 0.608 0.608 0 1.216 0.304 14 1 0 13 Architettura degli elaboratori 1 0.304 1.152 f= 0.10000110001001 0 0 0.576 0.152 0 0.576 11 12 0 1 0 - 28 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 14 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 9 Dato il numero A =+35016 e il numero B = 100101C2 effettuare –in complemento a 2 e sul numero di bit MINIMO per rappresentare entrambi gli operandi, non il risultato– le operazioni A+B e A-B segnalando se si verifica overflow o meno. Dire inoltre che numeri sono A e B rappresentati nel sistema decimale. Architettura degli elaboratori - 29 - Aritemtica binaria - Esercizi Esercizio 9: soluzione A = +3 5 016 = 11 0101 00002 = 011 0101 0000C2 B = 100101C2 Bisogna estendere B in segno per ottenere operandi rappresentati sullo stesso numero di bit: A = 01101010000C2 B = 11111100101C2 Architettura degli elaboratori - 30 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 15 A.A. 2016/17 Marco Tarini - Università dell'Insubria Esercizio 9: soluzione Operazione A+B carry 1111 A 01101010000 B 11111100101 A+B (1)01100110101 No overflow (somma di numeri di segno opposto) Verifica: A = +3.5.016 = 3*256+5*16 = 768+80 = 84810 B = 100101C2 = -32+5 = -2710 A+B= 848-27 = 821 01100110101 = 1+4+16+32+256+512 = 821 Architettura degli elaboratori - 31 - Aritemtica binaria - Esercizi Esercizio 9: soluzione Operazione A-B = A + (-B) -B = 00000011010 + 1 = 00000011011 carry 1 A 01101010000 -B 00000011011 A-B 01101101011 No overflow Verifica A-B= 848+27 = 875 01101101011 = 1+2+8+32+64+256+512 = 875 Architettura degli elaboratori - 32 - Aritemtica binaria - Esercizi Architettura degli elaboratori - Numeri e Aritmetica binaria - Esercizi 16