Architettura degli Elaboratori 04 – Aritmetica del calcolatore Aritmetica del calcolatore Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri a precisione finita - con un numero finito di cifre - non godono della proprietà di chiusura - le violazioni creano due situazioni distinte: - overflow - underflow Pagina 2 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri a precisione finita - non vale la regola associativa a + (b – c) = (a + b) – c Per esempio con a = 700, b = 400, c = 300 - non vale la regola distributiva del prodotto a x (b – c) = a x b – a x c Per esempio con a = 5, b = 210, c = 195 Pagina 3 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Sistemi di numerazione in base fissa Pagina 4 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Sistemi di numerazione in base fissa Pagina 5 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Sistemi di numerazione in base fissa Pagina 6 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Da base binaria a base ottale - raggruppare il numero binario a gruppi di tre cifre (partendo dalla meno significativa) e sostituire il corrispondente valore ottale di ogni gruppo Da base binaria a base esadecimale - raggruppare il numero binario a gruppi di quattro cifre (partendo dalla meno significativa) e sostituire il corrispondente valore esadecimale di ogni gruppo Pagina 7 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Pagina 8 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Pagina 9 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Dalla base ottale alla base binaria - sostituire ad ogni cifra ottale l'equivalente numero binario espresso con tre bit Dalla base esadecimale alla base binaria - sostituire ad ogni cifra esadecimale l'equivalente numero binario espresso con quattro bit Pagina 10 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Dalla base decimale alla base binaria (primo metodo) - sottrarre al numero decimale la più grande potenza di 2 minore del numero stesso; ripetere il procedimento con la differenza ottenuta. Il numero binario si ottiene inserendo 1 nelle posizioni corrispondenti alla potenze di 2 utilizzate, 0 nelle altre posizioni Pagina 11 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Esempio: convertire in base 2 il numero decimale 1492 - 210 = 1024 29 = 512 28 = 256 27 = 128 26 = 64 25 = 32 24 = 16 23 = 8 22 = 4 21 = 2 20 = 1 1 0 1 1 1 0 1 0 1 0 0 1024 1280 (1024 + 256) 1408 (1024 + 256 + 128) 1472 (1024 + 256 + 128 + 64) 1484 (1024 + 256 + 128 + 64 + 16) 1492 (1024 + 256 + 128 + 64 + 16 + 4) 149210 = 101110101002 Pagina 12 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Dalla base decimale alla base binaria (secondo metodo) - dividere il numero per 2. Il quoziente viene scritto sotto il numero e il resto (0 o 1) viene scritto accanto al quoziente. Si ripete il procedimento finché non si arriva a 0. Il numero binario si ottiene dalla colonna dei resti partendo dal basso. Pagina 13 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Pagina 14 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Dalla base binaria alla base decimale (primo metodo) - sommare le potenze di 2 che corrispondono alle posizioni degli 1 nel numero binario Per esempio: 10110 = 1x24 + 0x23 + 1x22 + 1x21 + 0x20 = = 16 + 0 + 4 + 2 + 0 = = 22 Pagina 15 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Dalla base binaria alla base decimale (secondo metodo) - scrivere il numero binario in colonna, con in basso il bit più significativo. L'elemento della riga i-esima è il doppio della riga (i-1)-esima più il bit della riga (0 o 1). Pagina 16 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi Pagina 17 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Conversione tra basi La conversione da decimale a ottale (o esadecimale) si realizza: - passando dalla conversione in binario - mediante sottrazioni successive di potenze di 8 o 16 Pagina 18 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione con modulo e segno Il bit più significativo viene utilizzato come bit di segno (1 per il “–”, 0 per il “+”) 0 1 2 3 000 001 010 011 +0 +1 +2 +3 4 5 6 7 100 101 110 111 -0 -1 -2 -3 Pagina 19 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione in notazione in eccesso di 2m-1 Viene rappresentato la somma del numero con 2m-1. Nel caso di 3 bit, il sistema è in eccesso di 4 e memorizza un numero dopo avergli sommato 4 Esempio: -1 -2 -3 -4 -1 + 4 = 3 -2 + 4 = 2 -3 + 4 = 1 -4 + 4 = 0 011 010 001 000 Pagina 20 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione in complemento a uno La negazione di un numero si ottiene scambiando tutti gli 1 con 0 e viceversa, compreso il bit di segno 0 1 2 3 000 001 010 011 +0 +1 +2 +3 4 5 6 7 100 101 110 111 -3 -2 -1 -0 Pagina 21 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione in complemento a due La negazione di un numero si ottiene: - scambiando tutti gli 1 con 0 e viceversa (compreso il bit di segno) - aggiungendo 1 al risultato (il resto sul bit più significativo viene ignorato) - per l'estensione del segno si aggiungono nuovi bit a sinistra uguali al bit di segno originale 0 1 2 3 000 001 010 011 +0 +1 +2 +3 -1 110 + 1 = 111 -2 101 + 1 = 110 -3 100 + 1 = 101 Pagina 22 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione in complemento a due 0. 1. 2. 3. 4. 5. 6. 7. 8. 0000 0001 0010 0011 0100 0101 0110 0111 1000 1111 1110 1101 1100 1011 1010 1001 1000 0111 + + + + + + + + + 1 1 1 1 1 1 1 1 1 = 10000 = 1111 = 1110 = 1101 = 1100 = 1011 = 1010 = 1001 = 1000 ( 0) (15) (14) (13) (12) (11) (10) ( 9) ( 8) Pagina 23 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione in complemento a due (estensione del segno) Permette di trasformare un intero rappresentato con n bit nello stesso intero rappresentato con m bit (m > n) Per i numeri negativi in complemento a 2 bisogna replicare il bit di segno fino a raggiungere la nuova posizione (20) 10100 00010100 (-20) 00010100 11101011 + 1 = 11101100 Pagina 24 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Numeri binari negativi - rappresentazione in complemento a due L'opposto di un numero si ottiene: - eseguendo il complemento a 2 della stringa - sommando 1 al numero ottenuto (20) 00010100 11101011 + 1 = 11101100 00010011 + 1 = 00010100 Pagina 25 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Addizione e sottrazione in complemento a due - in caso di numeri negativi bisogna prenderne il complemento a due Addizione (attenzione all'overflow) 1100 + –4 0100 = 4 ---------------10000 0 Pagina 26 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Addizione e sottrazione in complemento a due - per sottrarre un numero (sottraendo) da un altro numero (minuendo) si considera l'opposto del sottraendo e lo si somma al minuendo Sottrazione 2 – 7 = -5 2 + (-7) = -5 0010 + 1001 = ----------1011 Pagina 27 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Rappresentazione in virgola mobile La notazione scientifica permette di rappresentare numeri molto grandi o molto piccoli: 976.000.000.000.000=9,76⋅1014 0,0000000000000976 =9,76⋅10−14 Allo stesso modo, un numero binario può essere rappresentato come: ±S⋅B±E Pagina 28 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Rappresentazione in virgola mobile ±S⋅B±E Pagina 29 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Rappresentazione in virgola mobile ±S⋅B±E Il campo dell'esponente (8 bit in precisione semplice) permetterebbe di esprimere numeri compresi tra 0 e 255 ma, per tenere conto degli esponenti negativi si utilizza la notazione in eccesso (o polarizzata) Si possono così esprimere numeri compresi tra -128 e 127 Pagina 30 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Rappresentazione in virgola mobile notazione in eccesso k −1 Consiste nel sommare la quantità 2 −1 k è il numero di bit del campo esponente Nel caso di 4 bit si ha: +8 +7 +6 +5 +4 +3 +2 +1 0 1111 1110 1101 1100 1011 1010 1001 1000 0111 -1 -2 -3 -4 -5 -6 -7 -8 0110 0101 0100 0011 0010 0001 0000 - Pagina 31 Architettura degli Elaboratori 04 – Aritmetica del calcolatore Rappresentazione in virgola mobile notazione in eccesso Pagina 32