Rappresentazione binaria dei numeri interi senza segno
Conversione Decimale-Binario: 55 mod 2 =1 = a0 (55 div 2) mod 2 = 27 mod 2 = 1 = a1 ((55 div 2) div 2) mod 2= (27 div 2) mod 2=13 mod 2=1= a2 (13 div 2) mod 2= 6 mod 2 = 0 =a3 (6 div 2) mod 2 = 3 mod 2 = 1 =a4 (3 div 2) mod 2 = 1 mod 2 = 1 = a5 Dunque: = Conversione Binario-Esadecimale: 1)Raggruppo i bit a blocchi di 4: )Converto ciascun blocco in base = =7 16 Dunque: =
Conversione Binario-Decimale: =0*2 0 +1*2 1 +0*2 2 +0*2 3 +1*2 4 +0*2 5 +1*2 6 +0*2 7 = = =82 10 Conversione Binario-Esadecimale: 1)Raggruppo i bit a blocchi di 4: )Converto ciascun blocco in base = =2 16 =>
Conversione Esadecimale-Decimale: A7=10* *16 0 =10*16+7=167 3E= 3*16 1 +E*16 1 =48+14=62 Conversione Esadecimale-Binario: 1)Traduco ciascuna cifra esadecimale in un blocco di 4 bits : A 16 = = = = 7 10 = = )Il binario corrispondente si ottiene sostituendo ciascuna cifra esadecimale con il relativo blocco di 4 bit: A7 16 =
Somma tra Numeri Binari Interi Positivi Regole base: 0+0=0 0+1=1+0=1 1+1=0 con riporto di (1)=1 con rip.1, dove (1) e il riporto proveniente dallo step precedente Esempio: riporti = riporti = Un trabocco indica un overflow
Sottrazione tra Numeri Binari Interi Positivi Regole base: 0-0=0 0-1=1 con prestito di 1 1-0=1 1-1=0 Esempio: prestiti = prestiti = Un trabocco indica un underflow.
Moltiplicazione tra Numeri Binari Interi Positivi La moltiplicazione puo essere realizzata banalmente sommando al moltiplicando se stesso, un numero di volte pari al valore del moltiplicatore. 5*3=5+5+5=15. Assumendo che la somma abbia costo costante operando su addendi rappresentabili con un numero di bits noto a priori, tale algoritmo ha complessità computazionale pari a O(N), dove N è il valore del moltiplicatore. Se moltiplicando e moltiplicatore sono rappresentati con k bits, il prodotto può richiedere fino a un max di 2k bits per la sua rappresentazione x = somme parziali
Moltiplicazione tra Numeri Binari Interi Positivi: Potenze di 2 Nel caso di moltiplicazione per potenza k-esima di 2 il risultato è uno shift a sinistra di k posizioni: x 10 = x 100 =
Divisione tra Numeri Binari Interi Positivi Verifichiamo la correttezza del calcolo: 1001* 10001= = (resto) resto quoziente
Divisione tra Numeri Binari Interi Positivi: Potenze di 2 Nel caso di divisione per potenza k-esima di 2 il risultato è uno shift a destra di k posizioni:
Rappresentazione binaria dei numeri interi con segno
= = (senza segno) =-1*( )= (segno e modulo) =-1* = (complemento a 2) per verificare: a) invertiamo 1 con 0 e viceversa: , b) sommiamo 1: =91 Proprietà della rappresentazione in complemento a 2: 1) Loperazione di cambiamento di segno è eseguibile complementando alla base 2) La sottrazione si può ricondurre ad una somma (vedi prox slide) 3) E possibile rappresentare lo stesso numero con un numero maggiore di bit semplicemente copiando il bit + significativo: es: = (con 4 bit)= (con 8 bit)=
Somma tra Numeri Binari in Complemento a 2 Siano a e b due numeri e sia R(a) e R(b) la rappresentazione di a e b in complemento alla base (ad es. base 2) Sommando R(a) ed R(b), e ignorando leventuale riporto dalla posizione più significativa, otteniamo R(a+b). A meno che non vi sia discordanza tra il segno del risultato e quello comune dei due addendi (ovvero a>0,b>0,a+b 0): in tal caso si ha un supero di capacità = [2 + (-3) = -1] riporto = =OVERFLOW[6 + 7 = 13>7!] riporto In generale per calcolare a – b basta: 1)Trovare il complemento a 2 di b, cioè -b 2)Sommare a+(-b)
Somma tra Numeri Binari in Complemento a 2 Siano a e b due numeri e sia R(a) e R(b) la rappresentazione di a e b in complemento alla base (ad es. base 2) Sommando R(a) ed R(b), e ignorando leventuale riporto dalla posizione più significativa, otteniamo R(a+b). A meno che non vi sia discordanza tra il segno del risultato e quello comune dei due addendi (ovvero a>0,b>0,a+b 0): in tal caso si ha un supero di capacità =OVERFLOW [-1 + (-8) = -9<-8] riporto = =0111[6 + (-1) = 5] riporto Loverflow è possibile solo se gli addendi hanno segno comune!