Soluzioni Esercizi su rappresentazione binaria dell’informazione Mauro Bianco – 1 Numeri naturali Esercizi: 1. Si calcoli 3234 + 1024 . Partendo da destra a sinistra 24 + 34 = 510 = (4 + 1)10 = (11)4 . La cifra della somma è 1 e 1 il riporto. La seconda cifra 2 4 + 04 + 14 = 34 , non c’è riporto. 34 + 14 = 410 = (10)4 , quindi la cifra della somma vale 0 e il riporto è 1. Il risultato è (1031)4 . Controlliamo: 3234 = 3·1+2·4+3·16 = 3 + 8 + 48 = 59, 1024 = 2 · 1 + 0 · 4 + 1 · 16 = 18. 59 + 18 = 77. Convertiamo (1031)4 = 1 + 3 · 4 + 1 · 64 = 77. 2. Come si esprime bi in base b per un generico i? b = 1 · b1 + 0 · b1 = (10)b 3. Si trovi l’algoritmo per il prodottoP di due numeri in base b. n i Siano x = (x x . . . x x ) = n n−1 1 0 b i=0 xi b e y = (yn yn−1 . . . y1 y0 )b = Pm j j=0 yj b . ! m n X X z =x·y = x i bi · y j bj = i=0 = = m X i=0 = j=0 m X i=0 n X ! bj = i ! bj = i=0 i=0 (ri+1 b i=0 i yj x i b (ri+1 b + si )b n m X X i=0 n X i+1 i ! + s i · b ) bj Si devono conoscere i prodotti delle singole cifre, con gli eventuali riporti. Il risultato del prodotto tra x e la cifra i di y va moltiplicato per bi (shift 1 verso sinistra di i posizioni). Vediamo un esempio, in cui si suppone che non ci siano riporti. y2 x 2 x2 y2 y0 x 2 y1 x 1 y2 x 0 y1 x 2 y2 x 1 x1 y1 y0 x 1 y1 x 0 0 x0 y0 y0 x 0 0 0 × = + + = Nel caso di numeri binari si noti che il riporto nel prodotto è sempre nullo e il prodotto di x è per 1 o per 0. Esempio 6 × 5 = 30: 1 1 2 0 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 × = + + = Conversioni binario-decimale e decimale-binario 1. Si convertano in decimale i seguenti numeri • 325 = 2 · 5 + 2 = 12 • 334 = 3 · 4 + 3 = 15 • 1233 = 1 · 9 + 2 · 3 + 3 = 18 • 32016 = 3 · 216 + 2 · 36 + 1 = 721 2. Si convertano i seguenti numeri decimali in base 5 • 102310 1023/5 = 204, resto = 3 204/5 = 40, resto = 4 40/5 = 8, resto = 0 8/5 = 1, resto = 3 1/5 = 0, resto = 1 La soluzione è 130435 3. Si convertino in binario i seguenti numeri decimali: • 3210 = 1000002 • 6410 = 10000002 2 • 75310 : Numero Cifra 753/2=376 1 376/2=188 0 188/2=94 0 94/2= 47 0 47/2=23 1 23/2=11 1 11/2=5 1 5/2=2 1 2/2=1 0 1/2=0 1 La soluzione è 10111100012 . 4. Si convertino in decimale i seguenti numeri binari. • 100101011001102 Cifra Operazione 1 1 0 1*2+0 0 2*2+0 1 4*2+1 0 9*2+0 1 18*2+1 0 37*2+0 1 74*2+1 1 149*2+1 0 299*2+0 0 598*2+0 1 1196*2+1 1 2393*2+1 0 4787*2 Numero 1 2 4 9 18 37 74 149 299 598 1196 2393 4787 9574 5. Di quante cifre binarie sarà costituito il numero 1056? Come si può dirlo senza effettuare la conversione? (Suggerimento: qual è il massimo intero rappresentabile con n cifre binarie?) Con n cifre binarie si codificano 2n numeri da 0 a 2n − 1. Per codificare un numero x serve un numero di cifre n tale per cui 2n − 1 ≥ x, il che implica che deve essere n ≥ log2 (x + 1), ovvero, visto che n deve essere intero, n = dlog2 (x + 1)e. Nel caso di x = 1056, si ha n = 11. 3 Numeri negativi Esercizi: 1. Si dia la rappresentazione in complemento a 1 di -123 con parole di 8 bit. 3 12310 = 011110112 . In complemento a 1 −123 viene scritto 10000100. 2. Siano 0110 e 1010 due sequenze di bit che rappresentano i numeri a e b in complemento a 1. Si calcoli la rappresentazione di a+b in complemento a 1 usando solo le rappresentazioni, quindi senza passare per la conversione. Sia x il primo numero (maggiore di zero) e −y il secondo (minore di zero). −y è rappresentato da ȳ = 10102 = (24 − 1) − y. Si ha che y = 24 − 1 − ȳ. Se dobbiamo calcolare x − y dovremmo quindi scrivere x + ȳ − 24 − 1. x + ȳ = 01102 + 10102 = 100002 , come numero binario puro. Adesso si deve sottrarre 24 − 1 = 11112 . Quindi 10000 − 1111 = 0001. Controlliamo 01102 = 610 , −01012 = −510 (il complemento a 1 di 0101 è 1010). 6 − 5 = 1. 3. Si rappresenti −123 in complemento a 2 con parole di 8 bit. Qual è il valore binario rappresentato interpretato come numero binario puro? 12310 = 011110112 . In complemento a 2 −123 viene scritto 10000101. Come numero puro esso è 13310 , ovvero 256-123. 4. Si rappresenti 154 in complemento a 2 con parole di 8 bit. Qual è il valore binario rappresentato interpretato come numero binario puro? 15410 = 100110102 . 154 è positivo, ma il bit 7 della rappresentazione è 1, quindi il numero rappresentato in complemento a 2 è 01100110 2 = 10210 (256-154). Come binario puro è 154. 5. Si rappresenti 154 in complemento a 2 con parole di 10 bit. Qual è il valore binario rappresentato interpretato come numero binario puro? 15410 = 100110102 . Con parole di 10 bit, però esso diventa 0010011010. Il MSB è zero e rappresenta 154 sia in complemento a 2 che come numero binario puro. 6. Che numero rappresenta la sequenza 11100110 di 8 bit se il sistema di rappresentazione è complemento a 2? Il MSC è 1, quindi è un numero negativo. Rappresenta meno 00011001 2 + 1 = 000110102 = 26, ovvero -26. 7. Che rappresentazione ha la sequenza di 8 bit in complemento a 2 11100110 se la parola viene allungata a 12 bit? E la sequenza 00010011? Si tratta di estendere il segno: 111111100110. Infatti 11100110 rappresenta -26. Con parole di 12 bit dovremmo scrivere 26 in binario e poi farne il complemento a due: 000000011010 diventa 111111100101+1=111111100110. 8. Si può rappresentare la sequenza di 12 bit in complemento a 2 111111001011 con 8 bit? E la il numero in complemento a 2 110111001011? Per il primo, si vede che 111111001011 rappresenta −000000110101 2 , quindi -53. Con 8 bit viene rappresentato con 11001011. 4 Il secondo numero rappresenta -564, che con 8 bit non può essere rappresentato. Se infatti si prendessero solo i bit meno significativi si avrebbe 11001011 che rappresenta -53. 9. Si rappresenti il numero 123 in eccesso-100 con parole di 8 bit. 100 rappresenta zero, quindi 123 è rappresentato da 123+100=223, quindi 11011111. 5