Operazioni tra numeri interi con e senza segno Esercizio 1 Sommare e sottrarre su 4 bit i numeri in Binario puro 1001 e 1000. Somma 1001 + 1000 = ------10001 Questa somma non è possibile su 4 bit in quanto si è verificato un overflow: il risultato non è rappresentabile su 4 bit in quanto si è verificato un riporto sul MSB. Sottrazione 1001 1000 = -----0001 --> 1001 - 1000 = 0001 Esercizio 2 Sommare e sottrarre su 4 bit i numeri in Complemento a 1 "1000" e "1001". Somma 1000 + 1001 = ------10001 Questa somma non è possibile su 4 bit in quanto si è verificato un overflow: il segno del risultato (1-0-001) è diverso dai due segni degli addendi (1-000, 1-001). Sottrazione Si cambia di segno il sottraendo (complementando a 1): 1001 --> 0110 Ora si può sommare secondo le regole solite.. Essendo il modulo del sottraendo maggiore di quello del minuendo, l'operazione tra i moduli è la seguente: 1000 + 0110 = -----1110 Il segno è quello del numero che "prevale", cioè di 1001 (ossia il risultato sarà un numero negativo). Quindi: 1000 - 1001 = 1000 + 0110 = 1110 (= -1 decimale). Esercizio 3 Sommare e sottrarre su 4 bit i numeri in Modulo e Segno 1000 e 1001. Somma In questo caso (segni concordi) la somma si riduce ad una somma dei moduli. 000 + 001 = ----001 Questa somma è possibile su 4 bit in quanto non si è verificato un overflow (il risultato è 001 e non, ad esempio, 1-001): il segno del risultato è quindi uguale a quello degli operandi di partenza (0). Sottrazione Si cambia di segno il sottraendo: 1001 --> 0001 Ora si può sommare secondo le regole solite.. Essendo il modulo del sottraendo maggiore di quello del minuendo, l'operazione tra i moduli è la seguente: 1000 + 0001 = -----1001 Il segno è quello del numero che "prevale", cioè di 1001 (ossia il risultato sarà un numero negativo). Quindi: 1000 - 1001 = 1000 + 0001 = 1001 (= -1 decimale). Esercizio 4 Sommare e sottrarre su 4 bit i numeri in Complemento a 2 1000 e 1001. Somma 1001 + 1000 = ------10001 Questa somma non è possibile su 4 bit in quanto si è verificato un overflow: il segno del risultato (1-0-001) è diverso dai due segni degli addendi (1-001, 1-000). Sottrazione Si cambia di segno il sottraendo (complementandolo a 2). 1001 --> 0111 Ora si può sommare secondo le regole solite. 1000 + 0111 = ------1111 Non ci si deve più preoccupare del segno del risultato: la somma bit a bit restituisce già il numero corretto. Quindi: 1000 - 1001 = 1111 (= -1 decimale). Esercizio 5 Sommare e sottrarre i seguenti numeri supponendoli scritti in Binario Puro, Modulo e Segno e Complemento a 2, tutti su 8 bit. NUMERI BINARIO PURO MODULO E SEGNO 1° addendo 2° addendo Somma Sottrazione Somma Sottrazione Somma 01000110 10001100 11010010 NON ESISTE 00111010 01010010 11010010 10011000 11101111 OVERFLOW NON ESISTE OVERFLOW 01010111 00000111 10001000 00001110 10010110 01111010 00000110 10010110 10010110 00010111 11111111 OVERFLOW NON ESISTE 11101000 OVERFLOW 00010110 00000011 01111111 10000010 NON ESISTE 10000010 10111100 OVERFLOW 10001101 11001100 OVERFLOW NON ESISTE 11011001 00111111 OVERFLOW Esercizio 6 Si incrementino di una unità i seguenti numeri supponendoli scritti in Binario Puro, Modulo e Segno e Complemento a 2, tutti su 8 bit. NUMERO B.P. M.S. CA2 COMPLEME 01111111 10000000 OVERFLOW OVERFLOW 10000000 10000001 00000001 10000001 11111001 11111010 11111010 11111010 11100101 11100110 11100110 11100110 00011000 00011001 00011001 00011001 11111111 OVERFLOW 11111110 00000000 00000000 00000001 00000001 00000001 Esercizio 7 Moltiplicare e dividere il numero binario su 8 bit 00001100 per 2^3. La moltiplicazione per una potenza di 2 corrisponde ad uno shift del numero a sinistra se l'esponente è positivo, uno shift a destra se l'esponente è negativo. Moltiplicazione: si "spostano" del cifre del numero binario di 3 posizioni a sinistra (moltiplicazione per 2^3) 00001100 * 1000 = 01100000 Divisione: si "spostano" del cifre del numero binario di 3 posizioni a destra (moltiplicazione per 2^-3) 00001100 / 1000 = 00001100 * 0.001 = 00000001 (con troncamento) Esercizio 8 Moltiplicare e dividere i seguenti numeri binari su 8 bit per la potenza di due indicata. NUMERO MOLTIPLICAZIONE DIVISIONE Numero Moltiplicatore Risultato intero Troncamento 00100111 22 10011100 00001001 SI: .11 10001100 24 OVERFLOW 00001000 SI: .1100 00001000 21 00010000 00000100 00100100 25 OVERFLOW 00000001 SI: .00100 10000001 23 OVERFLOW 00010000 SI: .001