Codifica e aritmetica binaria

Documenti analoghi
Codifica dati e istruzioni. Lezione 9. Codifica dati e istruzioni. Codifica dati e istruzioni. Codifica binaria dell informazione

Codifica binaria. Rappresentazioni medianti basi diverse

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Rappresentazione dell informazione

Introduzione ai sistemi informatici 1

1.2f: Operazioni Binarie

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

Algoritmi Istruzioni che operano su dati. Per scrivere un programma è necessario. che l esecutore automatico sia in grado di.

Corso di Architettura degli Elaboratori

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Aritmetica binaria e circuiti aritmetici

Appunti di informatica. Lezione 4 anno accademico Mario Verdicchio

La Rappresentazione dell Informazione

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

Introduzione e Nozioni di Base. Prof. Thomas Casali

Interi positivi e negativi

Rappresentazione informazione ed elementi di aritmetica dei computer

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Codifica binaria dell informazione

1-Rappresentazione dell informazione

La rappresentazione dei numeri. La rappresentazione dei numeri. Aritmetica dei calcolatori. La rappresentazione dei numeri

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione e Codifica dell Informazione

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Codifica dell informazione

04 Aritmetica del calcolatore

Codifica di Dati e Istruzioni. Architetture dei Calcolatori (Lettere. Sistema di Codifica: Numeri Interi (Decimali) Sistemi di Codifica.

N= a i b i. Numeri e numerali. Sistemi di Numerazione Binaria. Sistemi posizionali. Numeri a precisione finita

La codifica dei numeri

Università degli Studi di Cassino

I.4 Rappresentazione dell informazione

La codifica. dell informazione

La codifica binaria. Informatica B. Daniele Loiacono

Definizione operativa di informazione. Codifica dell informazione. Alfabeto, sintassi e semantica. Codifica binaria dell informazione

Codifica dell informazione

Aritmetica dei calcolatori. La rappresentazione dei numeri

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Sistemi di Numerazione Binaria

Codifica dell informazione

Sistemi di Numerazione Binaria

Calcolo numerico e programmazione Rappresentazione dei numeri

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Sistemi di Numerazione Binaria

Codifica binaria dell informazione

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori

Informazione binaria: - codici binari, notazione binaria/ottale/esadecimale -

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Pag. 1. La Rappresentazione e la Codifica delle informazioni (parte 2) Tipi di dati. Informatica Facoltà di Medicina Veterinaria

Calcolatori Elettronici Parte II: Sistemi di Numerazione Binaria. Prof. Riccardo Torlone Università di Roma Tre

Seconda lezione. Rivediamo un po di definizioni principali Proseguiremo con nuovi codici

Appunti di informatica. Lezione 3 anno accademico Mario Verdicchio

Numeri interi (+/-) Alfabeto binario. Modulo e segno

Lezione 2. Rappresentazione dell informazione

Rappresentazione dell Informazione

Sistemi di Elaborazione delle Informazioni

Sommario. I Sistemi di numerazione Posizionale e non Posizionale (1/2) I Codici. I Codici I Sistemi di numerazione Posizionali e non posizionali

La codifica. dell informazione

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N =

Architetture aritmetiche

Rappresentazione dei numeri in un calcolatore

La codifica digitale

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

Sistemi di Numerazione

I.4 Rappresentazione dell informazione - Numeri con segno

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Sistema Numerico Decimale

Codifica dell Informazione

Rapida Nota sulla Rappresentazione dei Caratteri

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2

Aritmetica dei Calcolatori Elettronici

Un ripasso di aritmetica: Conversione dalla base 10 alla base 2

Codifica dell Informazione

Addizionatori: metodo Carry-Lookahead. Costruzione di circuiti combinatori. Standard IEEE754

Abilità Informatiche e Telematiche

Aritmetica dei Calcolatori

Unità aritmetica e logica

Fondamenti di Programmazione. Sistemi di rappresentazione

RAPPRESENTAZIONE DELLE INFORMAZIONI

Elementi di Informatica

Corso di Calcolatori Elettronici I

Informatica. Mario Pavone - Dept. Mathematics & Computer Science - University of Catania. Trasferimento. Ambiente esterno.

Rappresentazione dei dati in memoria

Architettura degli Elaboratori

La codifica dell informazione

Somma di numeri binari

Elementi di informatica

Rappresentazione dell Informazione

Lezione 3. I numeri relativi

Cap. 2 - Rappresentazione in base 2 dei numeri interi

Introduzione ai sistemi informatici 3/ed Donatella Sciuto, Giacomo Buonanno, Luca Mari. Copyright 2005 The McGraw-Hill Companies srl

LA CODIFICA DELL INFORMAZIONE

I sistemi di numerazione e la numerazione binaria

Arithmetic and Logic Unit e moltiplicatore

Codifica dell'informazione

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

Esame di Informatica. Facoltà di Scienze Motorie LE UNITA DI MISURA (1/4) LE UNITA DI MISURA (3/4) LE UNITA DI MISURA (2/4) Lezione 2

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Transcript:

Codifica e aritmetica binaria Corso ACSO prof. Cristina Silvano, Politecnico di Milano Codifica binaria dell informazione Il calcolatore utilizza un alfabeto binario: usiamo dispositivi elettronici digitali in grado di assumere due solo stati: acceso/spento, ON/OFF, 1/0, VERO/FALSO. Un alfabeto binario non limita le funzionalità di un calcolatore. Il simbolo o cifra binaria si indica con bit (da Binary digit): ) quantità d informazione che si ottiene selezionando una configurazione da un insieme che ne contiene due. La risposta SI oppure NO a una domanda porta 1 bit di informazione. 2 Corso ACSO prof. C. Silvano Politecnico di Milano 1

Codifica binaria dell informazione Quanti oggetti diversi posso codificare con parole binarie composte da k bit? 1 bit: 2 1 = 2 stati (0, 1) 2 oggetti 2 bit: 2 2 = 4 stati (00, 01, 10, 11) 4 oggetti 3 bit: 2 3 = 8 stati (000, 001, 010, 011, 100, 101, 110, 111) 8 oggetti k bit: 2 k stati 2 k oggetti 3 Codifica binaria dell informazione Se passiamo da una parola binaria di k bit ad una parola di k+1 bit si raddoppia il numero di oggetti che si possono rappresentare (2 k+1 ). 4 Corso ACSO prof. C. Silvano Politecnico di Milano 2

Codifica binaria dell informazione Quanti bit mi servono per codificare N oggetti: N 2 k k log 2 N k = log 2 N Ipotesi implicita: le parole di un codice hanno tutte la stessa lunghezza. 5 Definire un codice Identificare due insiemi: Insieme delle configurazioni ammissibili; Insieme degli oggetti da rappresentare. Associare gli elementi dei due insiemi 6 Corso ACSO prof. C. Silvano Politecnico di Milano 3

Esempio Associare una codifica binaria ai giorni della settimana. Quanti bit devono avere le parole binarie usate per identificare i giorni della settimana (7 oggetti diversi)? k= log 2 7 =3 7 Esempio 111 010 Insieme delle configurazioni ammissibili 110 011 001 101 100 000 LUN MAR Insieme degli oggetti da codificare VEN SAB GIO DOM MER 8 Corso ACSO prof. C. Silvano Politecnico di Milano 4

Esempio 111 010 110 011 001 Codice 101 100 000 VEN LUN MAR GIO MER SAB DOM 9 Byte bit rappresenta 2 stati: 0 oppure 1. Byte rappresenta 8 bit 2 8 = 256 stati KiloByte [KB] = 2 10 Byte = 1024 Byte 10 3 Byte MegaByte [MB] = 2 20 Byte = 1048576 Byte 10 6 Byte GigaByte [GB] = 2 30 Byte 10 9 Byte TeraByte [TB] = 2 40 Byte 10 12 Byte 10 Corso ACSO prof. C. Silvano Politecnico di Milano 5

Notazione posizionale Consideriamo i numeri interi assoluti (numeri naturali più lo zero). Notazione posizionale in base b: Alfabeto: c i {0 b-1} c k c k-1 c 1 c 0 rappresenta: N = c k x b k + c k-1 x b k-1 + + c 0 x b 0 = Σ xb i (i=0 k) c i c 0 bit meno significativo c k bit più significativo 11 Notazione posizionale Basi più frequentemente utilizzate: base 2 : c i {0, 1} base 8: c i {0, 1, 2, 3, 4, 5, 6, 7} base 10: c i {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} base 16: c i { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 12 Corso ACSO prof. C. Silvano Politecnico di Milano 6

Codifica binaria Numeri binari: base b = 2 Alfabeto binario: cifre c i {0, 1} (c k c 1 c 0 ) 2 rappresenta: N = Σ (i=0 k) c i x 2 i 13 Conversione binario decimale Dato il numero N espresso in base 2, basta riscriverlo i secondo la notazione posizionale i utilizzando cifre e potenze della base 10. Esempi: N = 1101 2 N = 1 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 = 13 10 N = 100101 2 N = 1 x 2 5 + 0 x 2 4 + 0 x 2 3 + 1 x 2 2 + 0 x 2 1 + 1 x 2 0 = 37 10 14 Corso ACSO prof. C. Silvano Politecnico di Milano 7

Conversione decimale binario Si calcolano i resti della divisione per due finché il risultato t di una divisione i i diventa zero: Esempio: N = 23 10 23 : 2 = 11 resto R 0 = b 0 = 1 11 : 2 = 5 resto R 1 = b 1 = 1 5 : 2 = 2 resto R 2 = b 2 = 1 2 : 2 = 1 resto R 3 = b 3 = 0 1 : 2 = 0 resto R 4 = b 4 = 1 23 10 = 10111 2 15 Conversione decimale binario Esempio: N = 18 10 18 : 2 = 9 resto R 0 = b 0 = 0 9 : 2 = 4 resto R 1 = b 1 = 1 4 : 2 = 2 resto R 2 = b 2 = 0 2 : 2 = 1 resto R 3 = b 3 = 0 1 : 2 = 0 resto R 4 = b 4 = 1 18 10 = 10010 2 16 Corso ACSO prof. C. Silvano Politecnico di Milano 8

Codifica ottale Utile per rappresentare sinteticamente i valori binari. Numeri ottali: base b = 8 Alfabeto ottale: cifre c i {0, 1, 2, 3, 4, 5, 6, 7} (c k c 1 c 0 ) 8 rappresenta: N = Σ (i=0 k) c i x 8 i 17 Conversione ottale decimale Dato il numero N espresso in base 8, basta riscriverlo secondo la notazione posizionale i utilizzando cifre e potenze della base 10. Esempi: N = 354 8 N = 3 x 8 2 + 5 x 8 1 + 4 x 8 0 = 192 + 40 + 4 = 236 10 N = 1461 8 N = 1 x 8 3 + 4 x 8 2 + 6 x 8 1 + 1 x 8 0 = 512 + 256 + 48 +1 = 817 10 18 Corso ACSO prof. C. Silvano Politecnico di Milano 9

Conversione decimale ottale Si calcolano i resti della divisione per otto finché il risultato di una divisione diventa zero: Esempio: N = 1492 10 1492 : 8 = 186 resto R 0 = b 0 = 4 186 : 8 = 23 resto R 1 = b 1 = 2 23 : 8 = 2 resto R 2 =b 2 =7 2 : 8 = 0 resto R 3 = b 3 = 2 1492 10 = 2724 8 19 Conversione ottale binario Ogni cifra ottale corrisponde a tre cifre binarie: 0 [000], 1 [001], 2 [010], 3 [011] 4 [100], 5 [101], 6 [110], 7 [111] E sufficiente ricordarsi (o derivare) la rappresentazione binaria dei numeri da 0 a 7. Esempio: N = 354 8 [011] [101] [100] = 011101100 2 20 Corso ACSO prof. C. Silvano Politecnico di Milano 10

Conversione binario ottale Suddividere le cifre binarie (partendo da destra verso sinistra) tenendo conto che tre cifre binarie corrispondono a una cifra ottale N = 011101100 2 [011] [101] [100] = 354 8 N = 1100111001 2 [1] [100] [111][001]= 1471 8 21 Codifica esadecimale Utile per rappresentare sinteticamente i valori binari. Numeri esadecimali: base b = 16 Alfabeto esadecimale: cifre c i {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} (c Σ x16 k c 1 c 0 ) 16 rappresenta: N=Σ (i=0 k) c i i 22 Corso ACSO prof. C. Silvano Politecnico di Milano 11

Conversione esadecimale decimale Dato il numero N espresso in base 16, basta riscriverlo i secondo la notazione posizionale i utilizzando cifre e potenze della base 10. Esempi: N = EC 16 N = 14 x 16 1 + 12 x 16 0 = 224 + 12 = 236 10 N = 331 16 N = 3 x 16 2 + 3 x 16 1 + 1 x 16 0 = 768 + 48 + 1 = 817 10 23 Conversione decimale esadecimale Si calcolano i resti della divisione per sedici finché il risultato di una divisione diventa zero: Esempio: N = 1492 10 1492 : 16 = 93 resto R 0 = b 0 = 4 93 : 16 = 5 resto R 1 = b 1 = 13 (D) 5:16 = 0 resto R 2 = b 2 = 5 1492 10 = 5D4 16 24 Corso ACSO prof. C. Silvano Politecnico di Milano 12

Conversione esadecimale binario Ogni cifra esadecimale corrisponde a quattro cifre binarie: 0 [0000], 1 [0001], 2 [0010], 3 [0011] 4 [0100], 5 [0101], 6 [0110], 7 [0111] 8 [1000], 9 [1001], A[1010], B [1011] C [1100], D [1101], E [1110], F [1111] E sufficiente ricordarsi (o derivare) la rappresentazione binaria su 4 bit dei numeri da 0 a 15. N = 354 16 [0011] [0101] [0100] = 001101010100 2 25 Conversione binario esadecimale Suddividere le cifre binarie (partendo da destra verso sinistra) tenendo conto che quattro cifre binarie corrispondono a una cifra esadecimale. N = 001101010100 2 [0011] [0101] [0100] = 354 16 N = 1100111001 2 [11] [0011] [1001]= 339 16 26 Corso ACSO prof. C. Silvano Politecnico di Milano 13

Codifica binaria su n bit Con una sequenza di n bit si possono rappresentare 2 n numeri interi assoluti da 0 a 2 n -1. Esempio: n = 4 bit 2 4 = 16 numeri interi assoluti da 0 a 15. La lunghezza delle sequenze di bit adottate stabilisce il massimo numero che può essere rappresentato. 27 Rappresentazione dei numeri interi assoluti da 0 a 15 per diverse basi Base 2 Base 8 Base 10 Base 16 0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 N b 0111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 28 Corso ACSO prof. C. Silvano Politecnico di Milano 14

Codifica binaria su n+1 bit Se passiamo da una sequenza di lunghezza n bit ad una sequenza di n+1 bit si raddoppiano i numeri che si possono rappresentare (2 n+1 ). Esempio: n = 4 bit 2 4 = 16 numeri da 0 a 15. n=5bit 2 5 =32numeri da 0 a 31. 29 Codifica binaria su 2n bit Se raddoppiamo la lunghezza di una sequenza da nbita a 2n bit i numeri che si possono rappresentare aumentano esponenzialmente (2 2n ) Esempio: n = 4 bit 2 4 = 16 numeri da 0 a 15. n = 8 bit 2 8 = 256 numeri da 0 a 255. Esempio: Con 32 bit si possono rappresentare 2 32 numeri naturali da 0 a 2 32-1= 4 294 967 295 4 x 10 9. Con 64 bit si possono rappresentare 2 64 numeri naturali da 0 a 2 64-1= 16 x 10 18 = 1,6 x 10 19 30 Corso ACSO prof. C. Silvano Politecnico di Milano 15

Aritmetica binaria 31 Addizione binaria Addizione binaria tra due bit (a + b): oltre al bit di somma S occorre memorizzare il bit di riporto R (carry): a b S R 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 32 Corso ACSO prof. C. Silvano Politecnico di Milano 16

Addizione binaria su n bit Addizione binaria tra due numeri interi assoluti di lunghezza n bit: si allineano i due numeri in colonne da destra verso sinistra (cioè partendo dal bit meno significativo); si eseguono le somme bit a bit da destra verso sinistra considerando per ogni colonna (successiva alla colonna corrispondente al bit meno significativo) il riporto generato dalla colonna alla sua destra 33 Addizione binaria tra due bit ai e bi con riporto in ingresso Ri ai bi Ri Si Ri+1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 34 Corso ACSO prof. C. Silvano Politecnico di Milano 17

Esempio 4 bit: A = 0101 B = 0011 R 1 1 1 A 0 1 0 1 5 10 B 0 0 1 1 3 10 A+B 1 0 0 0 8 10 35 Overflow Se si considerano due numeri interi assoluti rappresentati su nbit si verifica la condizione di overflow ogni volta che il risultato supera 2 n -1 Esempio: 4 bit: A = 0101 B = 1011 R 1 1 1 1 A 0 1 0 1 5 10 B 1 0 1 1 11 10 A+B 1 0 0 0 0 16 10 36 Corso ACSO prof. C. Silvano Politecnico di Milano 18

Rappresentazione dei numeri interi relativi (o con segno) Codifica modulo e segno Codifica in complemento a due 37 Codifica modulo e segno Soluzione: indicare il segno seguito dal valore assoluto. 1 bit per indicare il segno (convenzione: 0 positivo e 1 negativo) Restanti(n-1) bit per rappresentare il modulo (o valore assoluto) del numero Indispensabile indicare il numero n di bit utilizzati Esempio: 4 bit +6 10 = 0110 ms 6 10 = 1110 ms Problema: ci sono 2 rappresentazioni dello zero: Esempio: 4 bit +0 10 = 0000 ms 0 10 = 1000 ms 38 Corso ACSO prof. C. Silvano Politecnico di Milano 19

Codifica modulo e segno Con una sequenza di n bit si possono rappresentare 2 n numeri iinteri iassoluti tida 0 a 2 n -1. Con una sequenza di n bit si possono rappresentare con la codifica modulo e segno 2 n-1 numeri interi relativi compresi nell intervallo da (2 n-1 1) a 2 n-1-1. Esempio: 4 bit 16 numeri interi assoluti da 0 a 15 4 bit 15 numeri interi relativi da 7 a 7 39 Diverse interpretazioni della codifica binaria su 4 bit Rappres. numeri interi assoluti Rappr. numeri interi relativi (modulo e segno) 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 8-0 1001 9-1 1010 10-2 1011 11-3 1100 12-4 1101 13-5 1110 14-6 1111 15-7 40 Corso ACSO prof. C. Silvano Politecnico di Milano 20

Modulo e segno: somma comparatore Operazione: A + B NO Segno A = Segno B SÌ sommatore sottrattore NO A > B SÌ RIS = A + B RIS = B A RIS = A B Segno RIS = Segno A Segno RIS = Segno B Segno RIS = Segno A Codifica in complemento a due Alfabeto binario: Anche il segno è rappresentato da 0 o 1 Indispensabile indicare il numero n di bit utilizzati Complemento a due: Date le sequenze di n bit, per rappresentare il numero X si utilizza il valore binario corrispondente a 2 n +x Esempio: 4 bit +6 10 2 4 + 6 = 22 [1] 0110 0110 C2 4 bit -6 10 2 4-6 = 10 [0] 1010 1010 C2 42 Corso ACSO prof. C. Silvano Politecnico di Milano 21

Codifica in complemento a due Con una sequenza di n bit si possono rappresentare con la codifica in complemento a due 2 n numeri interi relativi compresi nell intervallo da 2 n-1 a 2 n-1-1. Esempio: 4 bit 16 numeri interi relativi da 8 a 7 Notare: c è una sola rappresentazione dello zero: 4 bit: +0 10 = 0000 C2 (mentre 1000 C2 = -8 10) ) Ciò impedisce il bilanciamento tra numeri positivi e negativi: 4 bit: zero + 7 numeri positivi (fino a 7) + 8 numeri negativi (fino a 8). 43 Codifica in complemento a due Primo metodo pratico per calcolare la rappresentazione di X a partire da quella di X: Effettuare il complemento di ogni bit di X e aggiungere 1. Esempio: 4 bit +6 10 = 0110 C2 Complemento di tutti i bit: 1001 C2 Aggiungere 1: (1001 + 0001) = 1010 C2 =-6 10 44 Corso ACSO prof. C. Silvano Politecnico di Milano 22

Codifica in complemento a due Secondo metodo pratico per calcolare la rappresentazione di X a partire da quella di X: Partendo da destra verso sinistra, lasciare invariati tutti i bit fino al primo 1 compreso, e complementare tutti gli altri bit. Esempio: 4 bit +6 10 = 0110 C2 Gli ultimi due bit rimangono invariati 10 Complementare gli altri 2 bit: 1010 C2 =-6 10 45 Diverse interpretazioni della codifica binaria su 4 bit Rappres. numeri interi assoluti Rappr. numeri interi relativi (MS) Rappr. numeri interi relativi (C2) 0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 maxint 1000 8-0 -8 minint 1001 9-1 -7 1010 10-2 -6 1011 11-3 -5 1100 12-4 -4 1101 13-5 -3 1110 14-6 -2 1111 15-7 -1 46 Corso ACSO prof. C. Silvano Politecnico di Milano 23

Codifica in complemento a due Data la rappresentazione di un numero su n bit, la rappresentazione dello stesso numero su n+1 bit si ottiene aggiungendo a sinistra un bit uguale al bit più significativo (operazione di estensione del segno sign extension) in modo da rispettare il valore del numero. Esempio: Rappresentazione di 6 su 4 bit = 1010 C2 Rappresentazione di 6 su 5 bit = 11010 C2 Rappresentazione di 6 su 8 bit = 11111010 C2 Rappresentazione di 6 su 16 bit = 1111111111111010 C2 47 Codifica in complemento a due Operazione di estensione del segno (sign extension) Propagazione a sinistra del MSB (rispetta il valore del numero) Operazione di estensione di zero (zero extension) Riempimento con 0 dei bit più significativi (può non rispettare il valore del numero). Es.: da 4 a 8 bit: 0011 0000 0011 (da 3 a 3) Es.: da 4 a 8 bit: 1010 0000 1010 (da 6 a 10) Nella costruzione di costanti su 32 bit (superiori a 65535) può servire il riempimento con 0. 48 Corso ACSO prof. C. Silvano Politecnico di Milano 24

Numeri in C2 su 32 bit 0000 0000 0000 0000 0000 0000 0000 0000 2 = 0 10 0000 0000 0000 0000 0000 0000 0000 0001 2 = 1 10 0000 0000 0000 0000 0000 0000 0000 0010 2 = 2 10. 0111 1111 1111 1111 1111 1111 1111 1101 2 = 2 147 483 645 10 0111 1111 1111 1111 1111 1111 1111 1110 2 = 2 147 483 646 10 0111 1111 1111 1111 1111 1111 1111 1111 2 = 2 147 483 647 maxint 10 1000 0000 0000 0000 0000 0000 0000 0000 2 = -2 147 483 648 10 minint 1000 0000 0000 0000 0000 0000 0000 0001 2 = -2 147 483 647 10 1000 0000 0000 0000 0000 0000 0000 0010 2 = -2 147 483 646 10. 1111 1111 1111 1111 1111 1111 1111 1101 2 = -3 10 1111 1111 1111 1111 1111 1111 1111 1110 2 = -2 10 1111 1111 1111 1111 1111 1111 1111 1111 2 = -1 10 49 Osservazioni In entrambe le rappresentazioni (MS e C2) i numeri positivi iniziano con 0, quelli negativi con 1 (è come se il primo bit rappresentasse il segno del numero). Nella rappresentazione C2: 1000 0000 è minint 1111 1111 è -1 50 Corso ACSO prof. C. Silvano Politecnico di Milano 25

Osservazioni Principale vantaggio della notazione in complemento a due: la sottrazione tra due numeri (a b) si effettua come somma algebrica a + (-b) C2 Esempi: 4 6=4+(-6) C2 = 0100 + 1010 = 1110 = (-2) C2 7 3 = 7 + (-3) C2 = 0111 + 1101 = [1]0100 = +4 51 Somma algebrica Si consideri l operazione di somma algebrica di due numeri interi di n bit dotati di segno e rappresentati in complemento a due Il risultato dell addizione è corretto, a patto che cada nel campo dei valori rappresentabili (-2 n-1 N 2 n-1 1) 1), pur di trascurare l eventuale riporto in uscita dal bit più significativo. 52 Corso ACSO prof. C. Silvano Politecnico di Milano 26

Esempi su n=4 bit 2 + 3 = 0010 + 0011 = 0101 = 5-5 - 2 = (-5)+ (-2) = 1011 + 1110 = [1]1001 = -7-3 (-7) = (-3)+ 7 = 1101 + 0111 = [1]0100 = +4-7 1 = (-7)+ (-1) = 1001 + 1111 = [1]1000 = -8 +2 (-3) = 2 + 3 = 0010 + 0011 = 0101 = +5 53 Overflow/underflow Il segnale di riporto in uscita non è sufficiente per indicare un overflow/underflow di una somma algebrica di numeri interi con segno. Sommando 2 numeri di n bit, la somma può eccedere gli n bit (il bit di segno prende il valore del risultato anziché il valore del segno corretto). Si ha superamento di capacità se: Sommando due numeri positivi si ottiene un risultato negativo (generazione di overflow) Sommando due numeri negativi si ottiene un risultato positivo (generazione di underflow) 54 Corso ACSO prof. C. Silvano Politecnico di Milano 27

Esempi su n=4 bit 7 + 4 = 0111 + 0100 = 1011 = -5 NO! OVERFLOW! -4-6 = (-4)+ (-6) = 1100 + 1010 = [1]0110 = 6 NO! UNDERFLOW! 55 Caratteristiche dei numeri in C2 Una sola rappresentazione dello 0 Intervallo di rappresentazione asimmetico -2 31 ; 2 31 1 MSB rappresenta il bit di segno Occorre fare attenzione tra la rappresentazione di numeri signed e unsigned La sottrazione tra due numeri si effettua come somma algebrica 56 Corso ACSO prof. C. Silvano Politecnico di Milano 28

Caratteristiche dei numeri in C2 Signed vs. unsigned Gli indirizzi di memoria sono solo positivi (sfruttano tutti e 32 i bit): (2 32 1) mandirizzo di memoria possibile MSB = 1 in un numero unsigned più grande di 0111 1111 (maxint) MSB = 0 non c è differenza tra unsigned e signed. Nel processore MIPS ci sono istruzioni apposite che operano con numeri unsigned 57 Circuiti Aritmetici Corso ACSO prof. C. Silvano Politecnico di Milano 29

Half Adder Addizionatore binario tra due bit ( + y i ) con uscite il bit di somma s i e il bit di riporto c i+1 (carry): HALF ADDER s i y i s i c i+1 0 0 0 0 y i c i+1 0 1 1 0 1 0 1 0 1 1 0 1 Half Adder s i = xor y i c i+1 = and y i s i y i c i+1 Corso ACSO prof. C. Silvano Politecnico di Milano 30

Full Adder Addizionatore binario tra due bit ( + y i ) con riporto in ingresso c i (carry in) e con uscite il bit di somma s i e il bit di riporto c i+1 (carry out): FULL ADDER xi yi ci si ci+1 0 0 0 0 0 0 0 1 1 0 s i 0 1 0 1 0 y 0 1 1 0 1 i 1 0 0 1 0 c i c i+1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1 Full Adder: Implementazione Calcoliamo la prima forma canonica di s i e c i+1 s i = y i c i + y i c i + y i c i + y i c i c i+1 = y i c i + y i c i + y i c i + y i c i Possiamo semplificare c i+1 : c i+1 = y i c i + y i c i + y i c i + y i c i + y i c i + y i c i =( + )y i c i +(y i +y i ) c i +(c i +c i ) y i = 1 y i c i + 1 c i + 1 y i = y i c i + c i + y i Corso ACSO prof. C. Silvano Politecnico di Milano 31

Full Adder: Implementazione AND-OR (2 livelli) s i = y i c i + y i c i + y i c i + y i c i c i+1 = y i + c i + y i c i Full Adder: Implementazione con Half Adder Oppure possiamo riscrivere s i e c i+1 come: s i = y i c i + y i c i + y i c i + y i c i = c i ( y i + y i ) + c i ( y i + y i ) = c i ( xor y i ) + c i ( xor y i ) = ( xor y i ) xor c i c i+1 = y i c i + y i c i + y i c i + y i c i = c i ( y i + y i )+ y i (c i + c i ) = c i ( xor y i )+ y i Corso ACSO prof. C. Silvano Politecnico di Milano 32

Full Adder: Implementazione con Half Adder HALF ADDER s i FULL ADDER y i y i c i+1 HALF ADDER s i s i c i y i c i+1 y i c i+1 c i+1 Full Adder: Generico stadio i di un addizionatore su n bit y i c i+1 FA c i si Ogni stadio i possiede un bit di riporto in ingresso c i (carry in) dallo stadio precedente (i-1) e un bit di riporto in ingresso c i+1 (carry out) verso lo stadio successivo (i+1). Corso ACSO prof. C. Silvano Politecnico di Milano 33

Full Adder su n-bit Per realizzare un addizionatore binario tra due vettori da n bit (X + Y) con riporto in ingresso c i (carry in) e con uscite il vettore somma S e il bit di riporto c i+1 (carry out): Si devono sommare le coppie di bit dei 2 vettori partendo dal bit meno significativo (a destra) e propagando il riporto verso le posizioni più significative (a sinistra) Esempio: 4-bit Ripple Carry Adder x 3 y 3 x 2 y 2 x 1 y 1 x 0 y 0 c 4 y i c y y 3 i c i 2 c 1 c i+1 FA c c i+1 FA c c i+1 FA i i c i si si si y i c i+1 HA si s 3 s 2 4-bit RCA Addizionatore a propagazione di riporto per numeri binari su 4 bit s 1 s 0 Corso ACSO prof. C. Silvano Politecnico di Milano 34

Esempio: 4-bit Ripple Carry Adder Quando c 4 =1: Condizione di overflow cioè il risultato non può essere rappresentato su 4 bit. Oppure c 4 può rappresentare il riporto verso un successivo stadio nel caso di implementazione a cascata di addizionatori da 4 bit Esempio: 4-bit Ripple Carry Adder x 3 y 3 x 2 y 2 x 1 y 1 x 0 y 0 c 4 y i c y y y 3 i c i i 2 c 1 c 0 c i+1 FA c c i+1 FA c c i+1 FA c c i+1 FA i i i c i si si si si s 3 s 2 4-bit RCA Addizionatore a propagazione di riporto per numeri binari su 4 bit con c0 s 1 s 0 Corso ACSO prof. C. Silvano Politecnico di Milano 35

8-bit Ripple Carry Adder x 74 y 74 x 30 y 30 c 8 x 3 0 y 3 0 c 4 4RCA s 3 0 c 0 c 4 x 3 0 y 3 0 c 4 4RCA s 3 0 c 0 c 0 s 74 8-bit RCA s 30 Addizionatore a propagazione di riporto per numeri binari su 8 bit realizzato con 2 stadi da 4 bit collegati in cascata. 32-bit Ripple Carry Adder x 31 28 y 31 28 x 30 y 30 c 32 x 3 0 y 3 0 c 4 4RCA s 3 0 c 0 c 4 x 3 0 y 3 0 c 4 4RCA s 3 0 c 0 c 0 s 31 28 32-bit RCA s 30 Addizionatore a propagazione di riporto per numeri binari su 32 bit realizzato con 8 stadi da 4 bit collegati in cascata. Corso ACSO prof. C. Silvano Politecnico di Milano 36

32-bit Ripple Carry Adder x 31 24 y 31 24 x 70 y 70 c 32 x 70 c 8 8RCA s 70 y 70 c 0 c 8 x 70 c 8 8RCA s 70 y 70 c 0 c 0 s 31 24 32-bit RCA s 70 Addizionatore a propagazione di riporto per numeri binari su 32 bit realizzato con 4 stadi da 8 bit collegati in cascata. Numeri in C2 su n-bit Si considerino i numeri interi con segno rappresentati in complemento a 2 su n bit. Per sommare due numeri X e Y occorre fornire la loro rappresentazione in C2 all addizionatore e ignorare il riporto in uscita dal bit più significativo. La somma in uscita costituisce il valore algebrico corretto del risultato in C2 per risultati compresi tra -2 n-1 N 2 n-1 1 Corso ACSO prof. C. Silvano Politecnico di Milano 37

Numeri in C2 su n-bit Per sottrarre due numeri (X Y) occorre calcolare il C2 di Y e sommarlo ad X come nel caso precedente. La somma in uscita costituisce il valore algebrico corretto del risultato in C2 per risultati compresi tra -2 n-1 N 2 n-1 1. L operazione di sottrazione richiede il calcolo del C2 del sottraendo. 4-bit Ripple Carry Adder/Sub y 3 y 2 y 1 y 0 x 3 x 2 x 1 x 0 c 4 y i c y i y i y i c 0 3 c 2 c 1 c i+1 FA c c i+1 FA c c i+1 FA c c i+1 FA i i i c i si si si si ADD/ SUB 4-bit RCA s s s s s 3 s 2 Addizionatore/Sottrattore a propagazione di riporto per numeri interi con segno in C2 su 4 bit s 1 s 0 Corso ACSO prof. C. Silvano Politecnico di Milano 38

4-bit Ripple Carry Adder/Sub Il segnale di controllo ADD/SUB è c 0 : c 0 =0 per ADD (Applicati gli ingressi y i ) c 0 =1 per SUB (Applicati gli ingressi y i con incremento di 1 per calcolare il C2 di Y). Seconda soluzione: posso sostituire gli xor con dei mux2 e degli inverter nel seguente modo. Anche in questo caso il segnale di controllo ADD/SUB è c 0 4-bit Ripple Carry Adder/Sub y 3 y 2 y 1 y 0 x 3 0 1 x 2 0 1 x 1 0 1 x 0 0 1 c 4 y i c y i y i y i c 0 3 c 2 c 1 c i+1 FA c c i+1 FA c c i+1 FA c c i+1 FA i i i c i si si si si ADD/ SUB 4-bit RCA s 3 s 2 s 1 s 0 Addizionatore/Sottrattore a propagazione di riporto per numeri interi con segno in C2 su 4 bit Corso ACSO prof. C. Silvano Politecnico di Milano 39

Rappresentazione in C2 La rappresentazione dei numeri interi con segno in C2 viene scelta nei calcolatori per la semplicità e velocità delle operazioni aritmetiche di somma e sottrazione. Overflow Per le somme di numeri interi senza segno, il riporto in uscita indica la condizione di overflow oppure il riporto verso uno stadio successivo. Per le somme di numeri interi con segno in C2, l overflow(underflow) si verifica quando si sommano due numeri dello stesso segno e il segno della somma non è concorde con il segno dei due numeri. Corso ACSO prof. C. Silvano Politecnico di Milano 40

Overflow per numeri in C2 su 4-bit x 3 y 3 s 3 x 3 y 3 s 3 V = x 3 y 3 s 3 + x 3 y 3 s 3 V Ripple Carry Adder La commutazione dei circuiti combinatori non è it istantanea, t ma richiede ihid un tempo di propagazione del segnale elettrico che dipende dal numero di livelli logici attraversati dal segnale. Per esempio un implementazione di tipo AND-OR richiede 2 livelli logici. Problema: L addizionatore i con propagazione di riporto è lento: Il riporto si propaga sequenzialmente Corso ACSO prof. C. Silvano Politecnico di Milano 41

4-bit Ripple Carry Adder Rivediamo il calcolo del riporti e dei ritardi associati: c 1 = x 0 y 0 + x 0 c 0 + y 0 c 0 2li livellilli c 2 = x 1 y 1 + x 1 c 1 + y 1 c 1 = = x 1 y 1 + x 1 (x 0 y 0 + x 0 c 0 + y 0 c 0 ) + + y 1 (x 0 y 0 + x 0 c 0 + y 0 c 0 ) 4 livelli c 3 = x 2 y 2 + x 2 c 2 + y 2 c 2 = = x 2 y 2 + x 2 (x 1 y 1 +.) + y 2 (x 1 y 1 + ) 6 livelli c 4 = x 3 y 3 + x 3 c 3 + y 3 c 3 = = x 3 y 3 + x 3 (x 2 y 2 +.) + y 3 (x 2 y 2 + ) 8 livelli 4-bit Ripple Carry Adder Il ritardo nel calcolo del riporto incide sul ritardo associato ai bit di somma: s 0 = x 0 y 0 c 0 + x 0 y 0 c 0 + x 0 y 0 c 0 + x 0 y 0 c 0 s 1 = x 1 y 1 c 1 + x 1 y 1 c 1 + x 1 y 1 c 1 + x 1 y 1 c 1 s 2 = x 2 y 2 c 2 + x 2 y 2 c 2 + x 2 y 2 c 2 + x 2 y 2 c 2 s 3 =x 3 y 3 c 3 +x 3 y 3 c 3 +x 3 y 3 c 3 +x 3 y 3 c 3 2 livelli 4 livelli 6 livelli 8 livelli Corso ACSO prof. C. Silvano Politecnico di Milano 42

Ripple Carry Adder Si consideri un RCA su 16-bit. Calcolare i ritardi associati ai bit c 16, s 15. Si consideri un RCA su 32-bit. Calcolare i ritardi associati ai bit c 32, s 31. Corso ACSO prof. C. Silvano Politecnico di Milano 43