Conversioni di base: riassunto • Parte intera: divisioni per la nuova base, ogni resto rappresenta una cifra a par7re dalla meno significa7va • Parte frazionaria: mol7plicazioni per la base, la parte intera di ogni prodo;o rappresenta una cifra a par7re dalla più significa7va Esempio: Conversione binaria • Volendo conver7re 13.12510 in base 2 si divide il numero nelle par7 intera e frazionaria e si procede come segue: Conversione Parte Intera • La conversione in binario di un numero intero si oGene con divisioni (intere) successive per 2, fermandosi quando il risultato è pari ad 0 e leggendo i res7 o;enu7 partendo dall’ul7mo trovato: Parte intera 1310 = 1 1 0 1 2 Numero: 13 : 2 = Resto della divisione 1 Parte intera: 6 : 2 = Resto della divisione 0 Parte intera: 3 : 2 = Resto della divisione 1 Parte intera: 1 : 2 = Resto della divisione 1 Parte intera: 0 STOP Conversione Parte Frazionaria -­‐ 1 • La conversione di un numero frazionario in binario si effe;ua per mol7plicazioni successive. • Ad ogni passaggio si conserva la parte intera risultante dal prodo;o e si ripete il prodo;o sulla parte frazionaria rimanente. • La conversione può terminare in due modi: – La parte frazionaria si annulla – La parte frazionaria diventa periodica • Le cifre intere, le;e nell’ordine di calcolo, danno la conversione binaria del numero. Conversione Parte Frazionaria -­‐ 2 0.12510 = 0.0 0 1 2 Numero: 0.125 x 2 = 0 Resto: 0.250 x 2 = 0 Resto: 0.500 x 2 = 1 Resto: 0 Fine conversione Risulta 13.12510= 1101.0012 Esempio: Conversione o;ale -­‐ 1 • Conver7re in o;ale il numero 13.12510 – Applicare il metodo delle divisioni successive per la parte intera, – Applicare il metodo delle mol7plicazioni successive per la parte frazionaria Esempio: Conversione o;ale -­‐ 2 • Parte intera: 1310= 1 5 8 Numero: 13 : 8 = Resto della divisione 5 Parte intera: 1 : 8 = Resto della divisione 1 Parte intera: 0 STOP • Parte frazionaria: 0.12510= 18 Numero: 0.125 x 8 = Parte intera 1 Resto: 0 STOP • Risulta: 13.12510=15.18 Esempio: Conversione esadecimale -­‐ 1 • Conver7re in esadecimale il numero 13.12510 – Applicare il metodo delle divisioni successive per la parte intera, – Applicare il metodo delle mol7plicazioni successive per la parte frazionaria Esempio: Conversione esadecimale -­‐ 2 • Parte intera: 1310= D16 Numero: 13 : 16 = Resto della divisione 13 →D Parte intera: 0 STOP • Parte frazionaria: 0.12510= 216 Numero: 0.125 x 16 = Parte intera 2 Resto: 0 STOP • Risulta: 13.12510=D.216 CONVERTIRE IL NUMERO 58,0710 IN BINARIO CONVERTIRE IL NUMERO 58,0710 IN BINARIO CONVERTIRE IL NUMERO 58,0710 IN BINARIO CONVERTIRE IL NUMERO 4287,31210 IN ESADECIMALE CONVERTIRE IL NUMERO 4287,31210 IN ESADECIMALE CONVERTIRE IL NUMERO 4287,31210 IN ESADECIMALE Conversione di un numero dalla base b1 alla base b2 quando b2= b1k dove K è un intero ≥2 • ESEMPIO: b1=2, b2=8=23 • N2= dk dk-­‐1 . . . d5 d4 d3 d2 d1 d0 = dk2k+….+d525+d424+d323+d222+d121+d020 = ….+(d522+d421+d320)23+(d222+d121+d020)20 = ch23*h+…. +c223*2+c123*1+c023*0 con 0 ≤ ci ≤ 7 = ch8h+…. c282+c181+c080 • N8= ch ch-­‐1 . . . c5 c4 c3 c2 c1 c0 • Quindi se una base è potenza dell’altra, con esponente K, la conversione è molto semplice: basta sos7tuire ogni gruppo di K cifre del numero in una base (b1) con la cifra corrispondente nell’altra base (b2) o viceversa. • N.B. se il numero di bit non è mul7plo di K aggiungere gli 0 necessari a renderlo tale in posizioni che non modifichino il significato del numero. Da binario a esadecimale • Una cifra esadecimale corrisponde a 4 bit • Si possono rappresentare numeri binari lunghi con poche cifre (1/4) • La conversione da binario ad esadecimale è immediata, raggruppando le cifre binarie in gruppi di 4 (da destra) e sos7tuendole con le cifre esadecimali secondo la tabella precedente Binario↔Esadecimale • Raggruppare le cifre della rappresentazione binaria in gruppi di qua;ro, se necessario aggiungendo tan7 zeri a sinistra della parte intera ed a destra della parte frazionaria. • Sos7tuire ai gruppi di qua;ro l’equivalente cifra esadecimale. • 1101.0012→1101 .00102 • 1101.0012→ D .2 16 • Segue: 13.12510=1101.0012=D.216 Da esadecimale a binario • La conversione da esadecimale a binario si oGene espandendo ciascuna cifra con i 4 bit corrisponden7 Da binario a o;ale • Raggruppare le cifre della rappresentazione binaria in gruppi di tre, se necessario aggiungendo tan7 zeri a sinistra della parte intera ed a destra della parte frazionaria. • Sos7tuire ai gruppi di tre l’equivalente cifra o;ale. • 1101.0012→001 101 .001 2 • 1101.0012→ 1 5 .1 8 • Segue: 13.12510=1101.0012=15.18 Conversioni fra basi diverse: esempi Conversioni fra basi diverse: esempi Conversioni fra basi diverse: esempi Si può fare anche il passaggio inverso Conversioni fra basi diverse: esempi Si può fare anche il passaggio inverso Conversione da base 8 a base 16 Conversione da base 16 a base 8 Bit, byte e rappresentazione Interi -­‐ 1 • La memoria di un computer è cos7tuita da circui7 ele;ronici elementari capaci di mantenere nel tempo un segnale convenzionalmente indicato con 0 o 1. • L’informazione rappresentata dal circuito elementare è de;a “bit”. • I bit sono aggrega7 in gruppi di 8. Un insieme di 8 bit è de;o “byte”. • I byte vengono raggruppa7 a mul7pli di due. • Esistono nomi anche per gruppi di byte, (es 2 byte = 1 word), ma si usa parlare di memoria da 2 byte o meglio da 32 bit ecc. Bit, byte e rappresentazione Interi -­‐ 2 • Quando i byte aggrega7 diventano migliaia ed oltre si antepongono a “byte” dei suffissi in base all’ordine di grandezza dell’aggregato: Interi rappresentabili • Data la possibilità di un bit di rappresentare solo due “cifre”, segue che la rappresentazione numerica che meglio si ada;a è quella binaria. • Un byte è composto da 8 bit, quindi con un byte si può rappresentare un numero intero con al massimo 8 cifre, cioè da 0 a 28-­‐1=255 • Con opportune combinazioni di byte si possono rappresentare numeri interi posi7vi anche superiori: – 2 byte = 16 bit →rappresentabili: [0,(216-­‐1)] = [0,65.635] – 4 byte = 32 bit →rappresentabili: [0,(232-­‐1)] = [0,4.294.967.295] Esempio • In una cella di memoria da 8 bit il numero 5010 è rappresentato in forma binaria e salvato come segue: 1 0 0 1 0 1 1 0 • Lo stesso numero in una cella da 16 bit 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 Dall’informazione elementare alle operazioni elementari • Inversione di un bit: 0 à 1, 1 à 0 • “somma” di due bit: 0+0 = 0, 1+0 = 1, 0+1 = 1, 1+1 = … 1 • “prodo;o” di due bit 0*0 = 0, 1*0 = 0, 0*1= 0, 1*1 = 1 • Se interpre7amo 0 come Falso (False, F) e 1 come Vero (True, T), le operazioni di cui sopra possono essere viste come operatori logici: • Inversione = negazione, (NOT, ¬) • Somma logica, (OR, ∨) • Prodo;o logico, (AND, ∧) • Mediante le sudde;e operazioni si possono elaborare sequenze di bit in modo arbitrario à operazioni base per costruire algoritmi • Oltre all’intui7va interpretazione logica queste operazioni sono facilmente realizzabili mediante disposi7vi ele;ronici (a loro volta elementari e combinabili in circui7 integra7) Somma fra numeri binari, bit di Carry, bit di Overflow • L’operazione di somma gode delle stesse regole qualsiasi sia la base della rappresentazione numerica. • Analogamente anche la ges7one dei ripor7 (CARRY) è la stessa. • Per numeri rappresenta7 con un numero finito di bit, la somma può portare ad un numero in valore assoluto troppo grande per poter essere memorizzato nella memoria stessa (OVERFLOW) Operazioni binarie Somma algebrica di interi • Somma: • 0 + 0 = 0 • 0 + 1 = 1 • 1 + 0 = 1 • 1 + 1 = 0 con riporto (carry) di 1 Esempio 1 1 1 1 1 0 0 1 + 1 1 0 1 = -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 1 0 0 1 1 0 • Quando si rappresentano i numeri con una quan7tà fissa n di cifre può succedere che il risultato di una somma non sia rappresentabile su n cifre; questa condizione è de;a di overflow. • Nel caso binario si ha riporto quando il risultato > 1 Somma fra numeri binari -­‐ Esempio • 3810+3610= 001001102+001001002= 00100110 + C=0 00100100 = 0 C=0 1 C=0 0 C=1 1 C=0 0 C=0 0 C=1 1 C=0 -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 010010102 = 7410 Differenza di interi • Nel caso 0 – 1 si chiede un pres7to al bit a sinistra e si esegue 10 – 1 = 1 • Si esegue la so;razione secondo le seguen7 regole: 0 -­‐ 0 = 0 1 -­‐ 0 = 1 1 -­‐ 1 = 0 0 -­‐ 1 = 1 con pres7to (borrow) di 1 Esempio 1 1 1 0 0 1 -­‐ 1 0 1 0 1 = -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ 1 0 0 1 0 0 Operazioni binarie Prodo;o di interi • La mol7plicazione tra numeri binari si effe;ua con lo stesso algoritmo u7lizzato per i numeri decimali, de;o di somma e scorrimento. • Si esegue la mol7plicazione secondo le seguen7 regole: 0 x 0 = 0 1 x 0 = 0 0 x 1 = 0 1 x 1 = 1 Esempio 1 1 1 0 0 1 x 1 0 1 = 1 1 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1