610 likes | 797 Views
Sistemi di numerazione. La rappresentazione più semplice: | | | | …. poco rappresentativa; difficoltà di memorizzazione Numeri romani: I, II, III, IV, V, VI, VII, VIII, IX, X, … 1997 MCMXCVII problemi di utilizzo nelle operazioni e nella rappresentazione di numeri “grandi”.
E N D
Sistemi di numerazione • La rappresentazione più semplice: | | | | …. poco rappresentativa; difficoltà di memorizzazione • Numeri romani: I, II, III, IV, V, VI, VII, VIII, IX, X, … 1997 MCMXCVII problemi di utilizzo nelle operazioni e nella rappresentazione di numeri “grandi”
Sistemi di numerazione • Numerazione decimale: base=10 7582 migliaia centinaia decine unità 103 102 101 100 7 103 +5 102 +8 101 +2 100 • Conteggio: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 0 con riporto
Rappresentazione di numeri interi • Si sceglie una base b. • Si scelgono b simboli che rappresentano i numeri da 0 a b-1 (cifre). • I numeri sono rappresentati dai coefficienti del polinomio per le potenze della base • Indichiamo la base del sistema di numerazione con il pedice Nb = As As-1 … A1 A0 0 Ai b - 1 Valore Nb = As bs + As-1 bs-1 + … + A1 b1 + A0 b0 • La rappresentazione è posizionale poiché il peso associato alla generica cifra Ai dipende dalla posizione di Ai
Sistemi di numerazione Numerazione binaria: base=2 • Conteggio: 0, 1 0 riporto 10, 11 0 riporto 100, … Corrispondenza binario-decimale
Sistemi di numerazione Numerazione binaria: base 2. Simboli usati: 0, 1 1 0 1 0 1 1 1 0 1 0 2 28=25626=64 24=16 22=4 20=1 29=51227=12825=32 23=8 21=2 1 29 +0 28 +1 27 +0 26 +1 25 +1 24 +1 23 +0 22 +1 21 +0 20 = = 512+128+32+16+8+2=69810
Sistemi di numerazione Numerazione ottale: base 8 Simboli usati: 0, 1, 2, 3, 4, 5, 6, 7 Esempio: 3 7 1 5 8 3 83 +7 82 +1 81 +5 80 = = 3512+764+8+5= = 1536+448+8+5 = 199710
Sistemi di numerazione Numerazione esadecimale : base 16 Simboli usati: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Esempio: 7 C D 16 7 162 +12 161 +13 160 = = 7256+1216+13= = 1792+192+13 = 199710
Sistemi di numerazione: esempi • Base 2 1 0 1 0 2 = 23 +2= 10 10 1 1 0 0 1 0 0 2 = 26 +25 +22 = 100 10 1 1 1 1 1 0 1 0 0 0 2 = 29 +28 +27 +26 +25 +23 =1000 10 • Base 8 1 2 8 = 8+2= 10 1 4 4 8 = 82 +4 8+4 = 100 1 7 5 0 8 = 83 +7 82 +5 8=512 + 448 + 40 = 1000 10
Sistemi di numerazione: esempi • Base 16 A 16 = 1010 6 4 16 = 6 16+4 = 100 10 3 E 8 16 = 3 162 +14 16+8=768 + 224 + 8 = 100010 F 16 = 1510 5 E 16 = 5 16+14 = 94 10 7 1 B 16 = 7 162 +1 16+11=1792 + 16 + 11 = 181910
Sistemi di numerazione: esempi b = 10, N = 14320 10 N = 1 104 +4 103 +3 102 + 2 10 + 0 1 b = 2, N = 110100 2 N = 1 25 +1 24 +0 23 + 1 22 +0 2+ 0 1 = 32 + 16 + 4 = 52 10 b = 8, N = 3216 8 N = 3 83 +2 82 +1 8+ 6= 1536 + 128 + 8 + 6 = 1678 10 b = 16, N = AB9E 16 N = 10 163+11 162+9 16 + 15 = 40960 + 2816 + 144 + 15 = 43935 10
Conversione di base Per la parte intera: • Dato un numero in una base A, si vuole rappresentarlo in base B, cioè: N A = N B = x0 + B (x1 + B (…B xs)…) • Se dividiamo N A per la nuova base B, otteniamo un quoziente N1 ed un resto R. Uguagliando: N A = R + B N1 = x0 + B (x1 + B (x2 + … ) ) da cui: x0 = R (x1 + B (x2 + … ) ) = N1 • Iterando il procedimento con N1 al posto di N A, si ottengono tutti i coefficienti del polinomio nelle potenze di B, cioè la codifica di N A nella nuova base, e quindi N B
Conversione di base 1258 0 629 1 314 0 157 1 78 0 39 1 19 1 9 1 4 0 2 0 1 1 0 1258 10 = 10011101010 2 1258 2 157 5 19 3 2 2 0 1258 10 = 2352 8 1258 10 78 14 4 4 0 1258 10 = 4EA 16
Conversione di base: numeri frazionari Nb =0 , A-1 A-2 A-3 A-4 A-5 Valore Nb = A-1b-1 + A-2b-2 + A-3b-3 + A-4b-4 + A-5b-5 In generale: Qb =As As-1 … A1 A0 , A-1 A-2 A-3 … A-R 0 Ai b - 1 Valore Qb = As bs + As-1 bs-1 + … + A1 b1 + A0 b0 + + A-1b-1 + A-2b-2 + A-3b-3 + … + A-Rb-R Esempi: b = 10, N = 325,23 10 N = 3 102 +2 101 +5 + 2 10-1 + 3 10-2 b = 2, N = 101,01 2 N = 1 22 +1 + 1 2-2 = 4 + 1 + 0,25 = 5,25 10
Conversione di base Per la parte frazionaria: • Dato un numero in una base A, si vuole rappresentarlo in base B, cioè: FA = FB = B-1(x-1 + B-1(x-2 + B-1(…B-1x-r)…)) • Se moltiplichiamo F A per la nuova base B, otteniamo una parte intera I ed una parte frazionaria F1. Uguagliando: FA B = I + F1 da cui: x-1 = I B-1(x-2 + B-1(…B-1x-r)…) = F1 • Iterando il procedimento con F1 al posto di FA, si ottengono i coefficienti del polinomio nelle potenze di B, cioè la codifica di FA nella nuova base, e quindi FB. Il procedimento termina quando Fl = 0, oppure quando si è raggiunta la precisione desiderata (errore < B-r se ci si ferma al termine x-r)
Conversione di base: numeri frazionari 0.59375 1.18750 1 0.37500 0 0.75000 0 1.50000 1 1.00000 1 0.59375 10= 0.10011 2 0.59375 4.75000 4 6.00000 6 0.59375 10= 0.46 8 0.59375 9.50000 9 8.00000 8 0.59375 10= 0.98 16
CONVERTIRE IL NUMERO 58,0710 IN BINARIO PARTE INTERA PARTE FRAZIONARIA 58 = 28x2+0 X0=0 0,07x2=0.14 X-1=0 29 = 14x2+1 X1=1 0,14x2=0.28 X-2=0 14 = 7 x2+0 X2=0 0,28x2=0.56 X-3=0 7 = 3 x2+1 X3=1 0,56x2=1.12 X-4=1 3 = 1 x2+1 X4=1 0,12x2=0.24 X-5=0 1 = 0 x2+1 X5=1 0,24x2=0.48 X-6=0 0,48x2=0.96 X-7=0 0,96x2=1.92 X-8=1 0,92x2=1.84 X-9=1 (TRONCHIAMO QUI) IL NUMERO IN BINARIO È: 111010,000100011
CONVERTIRE IL NUMERO 4287,31210 IN ESADECIMALE PARTE INTERA: PARTE FRAZIONARIA 4287:16=267 RESTO=15F 0,321x16=4,992 4 • :16= 16 RESTO=11B 0,992x16=15,872 F 16 :16= 1 RESTO= 00 0,872x16=13,952 D • :16= 0 RESTO= 11 0,952x16=15,232 F 4287,31210~ 10BF,4FDF…16 1 X 163 = 4096 11 X 161 = 176 • X 160 = 15 4 X 16-1 = 0,250 • X 16-2 = 0,04859 . . . . . . . . . . . . . . . . . . . . . . . _________________________________ = 4287, . . . .
Conversione di un numero dalla base β1 alla base β2 quando β2= β1k dove K è un intero ≥2 ESEMPIO: β1=2, β2=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 Quindise una base è potenza dell’altra, con esponente K, la conversione è molto semplice: basta sostituire ogni gruppo di K cifre del numero in una base (β1) con la cifra corrispondente nell’altra base (β2) o viceversa. N.B. se il numero di bit non è multiplo di K aggiungere gli 0 necessari a renderlo tale in posizioni che non modifichino il significato del numero.
Conversioni fra basi diverse Esempio: 16 2 0 0000 8 1000 1 0001 9 1001 2 0010 A 1010 3 0011 B 1011 4 0100 C 1100 5 0101 D 1101 6 0110 E 1110 7 0111 F 1111
Conversioni fra basi diverse: esempi • 1 0 0 1 1 1 0 1 0 1 0 2 125810 1 0 | 0 1 1 | 1 0 1 | 0 1 0 2 23528 1 0 0 | 1 1 1 0 | 1 0 1 0 2 4EA16 • 0 . 1 0 0 1 1 0 0 0 0 0 2 0.5937510 0 . 1 0 0 | 1 1 0 | 0 0 0 | 0 2 0.468 0 . 1 0 0 1 | 1 0 0 0 | 0 0 2 0.9816 Si può fare anche il passaggio inverso: • 1F516 1 | 1 1 1 1 | 0 1 0 1 2 • 75268 1 1 1 | 1 0 1 | 0 1 0 | 1 1 0 2 • 752616 1 1 1 | 0 1 0 1 | 0 0 1 0 | 0 1 1 0 2
Conversione di base: numeri frazionari 0.1 0.2 0 0.4 0 0.8 0 1.6 1 1.2 1 0.4 0 0.8 0 …. 0.1 0.8 0 6.4 6 3.2 3 1.6 1 4.8 4 …. 0.1 1.6 1 9.6 9 …. Può accadere che a un numero decimale non periodico corrisponda un numero binario, ottale o esadecimale periodico
Conversione da base 8 a base 16 6 1 5 2 0 4 7 8 110 001 101 010 000 100 111 1 8 D 4 2 7 16
Conversione da base 16 a base 8 F C 0 8 A 16 1111 1100 0000 1000 1010 3 7 4 0 2 1 2 8
Operazioni binarie 1 1 0 0 1 + 1 1 0 1 = ___________ 1 0 0 1 1 0 Somma Sottrazione In parentesi è indicato il riporto In parentesi è indicato il prestito 25 + 13 = ____ 38 1 1 0 0 1 - 1 1 0 1 =________ 1 1 0 0 25 - 13 = ____ 12
Operazioni binarie Moltiplicazione Divisione 1 1 0 0 1 x 1 1 0 1 = 1 1 0 0 1 1 1 0 0 1 - - 1 1 0 0 1 - - - 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 25 x 13 = 325 25 : 9 = 2 con resto di 7
Rappresentazione dei numeri nei calcolatori • L’unità minima di informazione nei calcolatori è il bit. Il bit corrisponde ad un sistema fisico dotato di stati stabili: passa/non passa corrente, tensione alta/bassa, condensatore scarico/carico, ecc. • I calcolatori si basano sul sistema numerico binario (cifre 0 e 1) • Si utilizza cioè un insieme di bit per rappresentare le cifre binarie. Il numero di bit utilizzati è generalmente un multiplo di 8 (cioè si utilizzano 1, 2, 4, 8 byte)
Rappresentazione dei numeri nei calcolatori • Si consideri un byte (8 bit). Un byte permette di rappresentare 28 stati differenti; può pertanto memorizzare 256 diverse configurazioni corrispondenti ai primi 256 numeri naturali (0-255) Nella rappresentazione in valore assoluto: N= b7 27 +b6 26 +b5 25 +b4 24 +b3 23 + b2 22 +b1 21 + b0 20 N=37
Rappresentazione dei numeri positivi e negativi • Esiste un problema: come rappresentare i numeri negativi • Prima soluzione: rappresentazione in Modulo e Segno (anche detta Binario Naturale) Si utilizza un bit per rappresentare il segno del numero considerato 0 + (numero positivo) 1 - (numero negativo) Se consideriamo un byte, rimangono ora 7 bit per il modulo del numero: i numeri rappresentabili sono perciò [0-127]
Rappresentazione dei numeri positivi e negativi Consideriamo per semplicità solo 4 bit. In modulo e segno: In valore assoluto:
Numero 7 6 5 4 3 2 1 Rappresentazione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 -2 -3 -4 -5 -6 -7 Rappresentazione dei numeri in Modulo e Segno
Rappresentazione dei numeri in Modulo e Segno • Esistono due rappresentazioni diverse dello 0 distanti 2n-1 fra di loro, se n sono i bit usati per la rappresentazione (8 con 4 bit) • Un incremento binario nella rappresentazione corrisponde ad un incremento per numeri positivi, ma un decremento per numeri negativi • Numero minimo: -2n-1+1 • Numero massimo: 2n-1-1
Rappresentazione in modulo e segno: problemi • Addizione e sottrazione sono le operazioni di cui si deve disporre per poter realizzare qualsiasi operazione aritmetica più complessa • Si supponga che il calcolatore abbia una “Unità Aritmetica” che realizzi indipendentemente le due operazioni. • Di fronte ad una somma algebrica, il calcolatore dovrebbe: • confrontare i due segni • se uguali, attivare il circuito di addizione • se diversi, identificare il maggiore (in valore assoluto) ed attivare il circuito di sottrazione • completare il risultato con il segno corretto • I passi indicati non sono eseguibili contemporaneamente perché ognuno dipende dai precedenti • In pratica per effettuare somma e sottrazione si ricorre ad un unico circuito, utilizzando un metodo che permette di evitare le operazioni di confronto
Complemento alla base di un numero • Nella rappresentazione in complemento alla base con n cifre le bn combinazioni rappresentano numeri positivi e negativi. • In particolare: le combinazioni da 0 a bn:2 - 1 rappresentano i numeri positivi, rispettando la usuale rappresentazione posizionale; Le combinazioni da bn:2 fino a bn – 1 rappresentano i numeri negativi, con la seguente definizione: dato un numero positivo X, il suo corrispondente negativo è dato da: bn-X
Complemento alla base – 1 di un numero • Nella rappresentazione in complemento alla base – 1 con n cifre le bn combinazioni rappresentano numeri positivi e negativi. • In particolare: le combinazioni da 0 a bn:2 - 1 rappresentano i numeri positivi, rispettando la usuale rappresentazione posizionale; Le combinazioni da bn:2 fino a bn – 1 rappresentano i numeri negativi, con la seguente definizione: dato un numero positivo X, il suo corrispondente negativo è dato da: (bn-1)-X
Complemento alla base Esempio b=10, n=2; 102configurazioni: i numeri da 0 a 49 rappresentano i positivi, con il consueto significato; da 50 a 99 i negativi come previsto dal complemento (-1 -> 99, -2 -> 98, … , -49 -> 51, -50 -> 50). X=36; -X in complemento alla base (si dice complemento a 10) è: 102 - X = 100 - 36 = 64 b=10, n=4; i numeri da 0 a 4999 rappresentano i positivi; da 5000 a 9999 i negativi (-1 -> 9999, -2 -> 9998, … , -4999 -> 5001, -5000 -> 5000) X=1630; -X in complemento alla base è: 10000 - 1630 = 8370 Regola pratica: il complemento a 10 si trova analizzando le cifre a partire da destra: gli zeri fino alla prima cifra significativa si riportano tali e quali; della prima cifra significativa si fa il complemento a 10, di tutte le altre il complemento a 9
Complemento alla base b=2, n=5 Positivi da 0 a 01111 Negativi da 10000 a 11111 X = 01011; trovo -X 1 0 0 0 0 0 - 0 1 0 1 1 = b=2, n=7 Positivi da 0 a 0111111 Negativi da 1000000 a 1111111 X=0011000; trovo -X 1 0 0 0 0 0 0 0 - 0 0 1 1 0 0 0 = 1 0 1 0 1 1 1 0 1 0 0 0 Regola pratica: partendo dal bit meno significativo, si riportano invariati tutti i bit fino al primo bit a 1 compreso; si complementano i rimanenti bit (0 1, 1 0)
Complemento alla base -1 X=36, b=10, n=2 in complemento alla base -1 è: 99 - 36 = 63 Si ottiene complementando a 9 ogni singola cifra X=01011, b=2, n=5 -X in complemento alla base -1 è: (25 - 1) - X = (100000 - 1) - X = 11111 - 01011 = 10100 Si ottiene complementando ogni singolo bit (0 1, 1 0)
Complemento alla base • Il complemento alla base si può ottenere anche sommando 1 al complemento alla base -1 (per definizione) Cb = bn - X Cb-1 = (bn - 1) - X Cb - Cb-1 = 1 C10 (36) = 64 che rappresenta - 36 C9 (36) = 63 che rappresenta - 36
Complementi alla base e alla base -1 Nelle rappresentazioni in complemento alla base e in complemento alla base -1 le rappresentazioni dei numeri negativi sono definite solo quando si è stabilito il numero di cifre. Il complemento alla base [e il complemento alla base -1] per X=36, b=10, n=2 è: 64 [63] Il complemento alla base [e il complemento alla base -1] per X=36, b=10, n=3 è: 964 [963] N.B: Tutti i numeri ottenuti rappresentano – 36 !!!
Rappresentazione in complemento: Riepilogo • Rappresentazione in complemento a 2: i numeri positivi sono rappresentati dal loro modulo e hanno il bit più significativo (segno) posto a 0. I numeri negativi sono rappresentati dalla quantità che manca al numero positivo per arrivare alla base elevata al numero di cifre utilizzate, segno compreso. Pertanto i numeri negativi hanno il bit del segno sempre a 1 • Metà delle configurazioni sono perciò riservate ai numeri positivi e metà ai numeri negativi • Discorsi analoghi possono essere fatti per basi diverse da 2: in base 10 un numero è negativo se la prima cifra è 5, in base 8 se 4, in base 16 se 8
Rappresentazione in complemento alla base Con n bit a disposizione: • Il numero minimo rappresentabile è -2n-1 • Il numero massimo rappresentabile è 2n-1 - 1 • -1 è rappresentato da tutti 1 qualunque sia il numero di bit considerato • Il numero può essere interpretato considerando il bit più significativo con segno negativo N= - b3 23 + b2 22 +b1 21 + b0 20
Numero 7 6 5 4 3 2 1 Rappresentazione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 -2 -3 -4 -5 -6 -7 -8 Rappresentazione in complemento a 2 • Vi è una sola rappresentazione dello 0 (0000) • Tutti i numeri sono consecutivi. La configurazione dello 0 segue quella di -1 trascurando il riporto
Rappresentazione in complemento alla base -1 Il numero minimo è -2n-1+1 Il numero massimo è 2n-1-1
Numero 7 6 5 4 3 2 1 Rappresentazione 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -1 -2 -3 -4 -5 -6 -7 Rappresentazione in complemento alla base -1 • Vi sono due rappresentazioni dello 0 (0000 e 1111) • Nella rappresentazione in complemento a 1 i numeri negativi si ottengono complementando a 1 tutti i corrispondenti numeri positivi segno compreso. Pertanto i numeri negativi hanno il bit di segno sempre a 1
Rappresentazione di interi in complemento a 2 • Con 1 byte (8 bit) max = 27-1 = 127 min = -27 = -128 • Con 2 byte (16 bit) max = 215-1 = 32767 min = -215 = -32768 • Con 4 byte (32 bit) max = 231-1 = 2 147 483 647 min = -231 = -2 147 483 648
Utilità del complemento alla base • Con la tecnica del complemento si può utilizzare un solo circuito per effettuare sia l’addizione, sia la sottrazione • Operiamo in base 10 e vogliamo calcolare A – B. • Si supponga di conoscere il risultato dell’operazione 10 - B (complemento a 10 di B). Allora: A - B = A + (10 - B) a condizione che si trascuri il riporto • Analogo discorso con k cifre purché si disponga del risultato dell’operazione 10k – B (complemento a 10k). Si ricordi sempre di fissare il numero di cifre • Se operiamo in base 2, con k cifre: A - B = A + (2k - B) a condizione che si trascuri il riporto • Se si utilizza la tecnica del complemento alla base -1 occorre sommare il riporto al risultato finale
Operazioni aritmetiche in complemento: esempi Usando il complemento A 43517 - 43517 + B 26106 = 73894 = (in complemento -26106 = 73894) ______ _______ A-B17411 117411 (riporto da non considerare) A 01001 - 01001 + B 00110 = 11010 = (in complemento -00110 = 11010) ______ ______ A-B 00011 100011 (riporto da non considerare) A 42A61 - 42A61 + B 00B02 = FF4FE = (in complem. -00B02 = FF4FE) ______ ______ A-B 41F5F 141F5F (riporto da non considerare)
Operazioni aritmetiche in complemento: esempi Con il complemento alla base -1 occorre sommare il riporto al risultato finale A 43517 - 43517 + 17410 + B 26106 = 73893 = 1 = ______ _______ _______ A-B 17411 117410 17411 A 01001 - 01001 + 00010 + B 00110 = 11001 = 1 = ______ _______ _______ A-B 00011 100010 00011 A 42A61 - 42A61 + 41F5E + B 00B02 = FF4FD = 1 = ______ _______ _______ A-B 41F5F 141F5E 41F5F