Codifica dell Informazione

Похожие документы
Introduzione al Linguaggio C

Sistemi di Numerazione Binaria

Notazione posizionale. Codifica binaria. Rappresentazioni medianti basi diverse. Multipli del byte

Codifica binaria. Rappresentazioni medianti basi diverse

Sistemi di Numerazione Binaria

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

Rappresentazione dell informazione

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

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

La codifica dei caratteri di un testo

Corso di Architettura degli Elaboratori

I.4 Rappresentazione dell informazione

Floating-point: mantissa La mantissa e codicata in modulo e segno su 24 bit, la mantissa e sempre normalizzata nella forma 1:XXXXX si rappresenta solo

La codifica. dell informazione

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Rappresentazione e Codifica dell Informazione

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

La codifica dei numeri

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

Rappresentazione dei numeri

La codifica. dell informazione

Rappresentazione dei numeri interi in un calcolatore

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Aritmetica dei Calcolatori Elettronici

Corso di Sistemi di Elaborazione delle informazioni

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

Lezione 3. I numeri relativi

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

Calcolo numerico e programmazione Rappresentazione dei numeri

Rappresentazione binaria

04 Aritmetica del calcolatore

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

Codifica binaria dell informazione

Транскрипт:

Codifica dell Informazione Programmazione - Michele Colajanni, 2003/2004 1 Esempi di segnali binari levetta: alta/bassa contatto: aperto/chiuso lampadina: accesa/spenta tensione elettrica: High/Low cristallo liquido: trasparente/opaco corrente elettrica: presente/assente Programmazione - Michele Colajanni, 2003/2004 2

Variabili binarie BIT (BInary digit) - Variabile x tale che: x B{0,1} Un bit può rappresentare un segnale binario. Bisogna però decidere quale valore fisico è rappresentato dal simbolo matematico 1. Esistono infatti due diverse possibilità usualmente denominate logica positiva e negativa I Interruttore I 0 alto 1 1 basso 0 C Contatto C 0 aperto 1 1 chiuso 0 L Lampada L 0 accesa 1 1 spenta 0 logica negativa logica positiva Programmazione - Michele Colajanni, 2003/2004 3 c b a Configurazioni binarie Configurazione binaria di n bit - E una stringa di n caratteri 0 e 1. Con una configurazione di n bit si possono codificare 2 n informazioni Es: n=3 c b a 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 1 1 n bit hanno 2 n configurazioni binarie diverse. Una configurazione di n bit può rappresentare i valori di n segnali binari ad un certo istante. Una configurazione di n bit può rappresentare i valori di un segnale binario in n istanti. 0 0 0 1 0 0 Programmazione - Michele Colajanni, 2003/2004 4 x n bit B n-1 B 2 b 1 b 0 t a t b t c

Codice binario Codice binario - Funzione dall insieme delle 2 n configurazioni di n bit ad un insieme di M informazioni (simboli alfanumerici, colori, eventi, stati interni, ecc.). Condizione necessaria per la codifica: 2 n M 2 n config. 0 0 0..0 1 0 0..0 0 1 0..0 1 1 0..0 0 0 1..0 0 0 1..1 0 1 1..1 1 1 1..1 non utilizzato Programmazione - Michele Colajanni, 2003/2004 5? 5 z a 1 M informazioni m Proprietà di un codice Il codice è una rappresentazione convenzionale dell informazione La scelta di un codice è condivisa da sorgente e destinazione ed ha due gradi di libertà: il numero di bit (qualsiasi, a patto che sia 2 n M ) l associazione tra configurazioni e informazioni; a parità di n e di M le associazioni possibili sono: 2 n! / (2 n -M)! Codice standard - Codice fissato da norme internazionali (de iure) o dal primo costruttore che risulta utile per tutti gli altri (de facto). L uso di codici standard nelle unità di I/O consente di collegare macchine realizzate da costruttori diversi Programmazione - Michele Colajanni, 2003/2004 6

0 1 più meno segno 1 0 Esempi Cifre decimali Altri 29 miliardi di codici a 4 bit 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 BCD zero uno due tre quattro cinque sei sette otto nove 1111110 0110000 1101101 1111001 0110011 1011011 0011111 1110000 1111111 1110011 7 segmenti (1= acceso) 1000000000 0100000000 0010000000 0001000000 0000100000 0000010000 0000001000 0000000100 0000000010 0000000001 uno su dieci Programmazione - Michele Colajanni, 2003/2004 7 Codice BCD (Binary Coded Decimal) Ad ogni cifra decimale sono associati 4 bit, secondo la tabella seguente: Cifra Decimale Cifra BCD 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 Dalla tabella è possibile osservare che esistono delle configurazioni non usate dal codice BCD: [1010...1111] (in quanto necessita di 10 delle 16 configurazioni possibili). Programmazione - Michele Colajanni, 2003/2004 8

Codice BCD (cont.) Utilizzando il codice BCD si ha una corrispondenza biunivoca fra il numero di cifre decimali e binarie Questo codice consente di avere dei circuiti di visualizzazione dei numeri decimali più semplici Esempio Codifica del numero decimale 27 con il codice BCD: 27 0010 0111 Programmazione - Michele Colajanni, 2003/2004 9 Codice 1 su N E un codice che associa ad ognuna delle n possibili configurazioni una stringa di n bit avente un solo bit ad 1 Esempi Calcolatori tascabili: utilizzato per immettere dati attraverso la tastiera numerica Negli ascensori: è utilizzato per visualizzare la posizione dei piani raggiunti e per selezionare il piano da raggiungere: Pulsanti ascensore Codifica 1 su N 3 2 1 1000 0100 0010 T 0001 Programmazione - Michele Colajanni, 2003/2004 10

Codice a sette segmenti Codice utilizzato nei display per consentire la rappresentazone grafica di cifre decimali. Impiega 7 bit (a,b,c,d,e,f,g) per codificare i 10 simboli decimali f e a g d b c 9 abcdefg 1111011 1 abcdefg 0110000 Programmazione - Michele Colajanni, 2003/2004 11 f e f e a g d a g d b c b c Codice a matrice di punti Impiega MxN bit per consentire la rappresentazione di simboli grafici su una matrice di punti di M righe e N colonne. Utilizzato per la visualizzazione dei caratteri nei monitor, nei display dei telefonini, nei display delle calcolatrici,... 0000000 0000000 0011000 0100100 0100100 0111100.. 0000000 Programmazione - Michele Colajanni, 2003/2004 12 N M

Classi di informazione da codificare all interno del calcolatore Informazione alfanumerica Codice ASCII (necessario 1 byte) Indirizzi di memoria Rappresentazione posizionale Sono numeri interi positivi (necessari più byte) Numeri Rappresentazione decimale codificata Rappresentazione posizionale Numeri interi positivi e negativi Numeri frazionari Programmazione - Michele Colajanni, 2003/2004 13 Codice ASCII Il codice ASCII è non ridondante, perché i simboli codificati sono in numero pari alle configurazioni ottenibili con 7 cifre binarie. Ampiamente utilizzato in computer, stampanti, trasmissione dati, 000 001 010 011 100 101 110 111 0000 NUL DLE 0 @ P p 0001 SOH DC1! 1 A Q a q 0010 STX DC2 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS, < L \ l 1101 CR GS - = M ] m } 1110 SO RS. > N ^ n ~ 1111 SI US /? O _ o DEL Sono numeri interi positivi(necessario un byte) Programmazione - Michele Colajanni, 2003/2004 14

Indirizzi Necessari per memorizzare informazioni complesse Indicano (puntano a) una locazione di memoria Sono numeri interi positivi (su più byte) Esiste un legame tra la dimensione della word e la dimensione massima della memoria (il numero di bit di un indirizzo binario denota l indirizzo massimo rappresentabile) CPU Bit per indirizzo Memoria massima 8080 16 bit 64 Kbyte (KB) 8086 20 bit 1 Megabyte (MB) 80286 24 bit 16 Megabyte 80486 46 bit 64 Terabyte (TB) Pentium 46 bit 64 Terabyte Programmazione - Michele Colajanni, 2003/2004 15 Unità di misura Unità di misura standard Byte (insieme di 8 bit) e suoi multipli Multipli 1 KiloByte= 1.024 byte x1024 = 1 MegaByte = 1.048.576 byte x1024 = 1 GigaByte = 1.073.741.824 byte x1024 = 1 TeraByte = 1.099.511.627.776 byte x1024 = 1 PetaByte =.. byte Abbreviazioni Kb = Kilobit Mb = Megabit Gb = Gigabit KB = KiloByte MB = MegaByte GB = GigaByte Programmazione - Michele Colajanni, 2003/2004 16

Rappresentazione dei numeri Programmazione - Michele Colajanni, 2003/2004 17 Sommario Introduzione Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Operazioni aritmetiche Rappresentazione dei numeri frazionari Numeri in virgola fissa Numeri in virgola mobile Nel Corso di Architetture dei Calcolatori Programmazione - Michele Colajanni, 2003/2004 18

Introduzione Sommario Numeri Numerali Basi Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Operazioni aritmetiche Programmazione - Michele Colajanni, 2003/2004 19 Numeri e numerali Numero: entità astratta Numerale: stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato da numerali diversi in sistemi diversi. Es., 156 nel sistema decimale CLVI in numeri romani Il numero di caratteri nel numerale determina l intervallo di numeri rappresentabili. Es., interi a 3 cifre con segno in notazione decimale: [-999,+999] Programmazione - Michele Colajanni, 2003/2004 20

Numerali: regole fondamentali Un numerale è solo una stringa di cifre Un numerale rappresenta un numero solo se si specifica un sistema di numerazione Lo stesso numerale rappresenta diversi numeri in diverse notazioni Esempio La stringa 110100 rappresenta: Centodiecimilacento in base 10 (+52) 10 in binario naturale (-11) 10 in complemento a 1 (-12) 10 in complemento a 2 (+20) 10 in eccesso 16 Un numero dell ordine di vari milioni in esadecimale Programmazione - Michele Colajanni, 2003/2004 21 Numeri a precisione finita Nel momento in cui si utilizzano numerali con un numero finito di cifre: Si perdono alcune proprietà dei numeri, quali: chiusura operatori ( +,, ) proprietà associativa, distributiva, Esempio: numerali decimali con due sole cifre frazionarie ovvero 2 cifre decimali e segno [-99,+99] 78+36=114 (no Chiusura) 60+(50-40) (60+50)-40 (no Associatività) Vi sono errori di arrotondamento Vi sono buchi nella rappresentazione dei reali Esempio usando numerali decimali con due sole cifre frazionarie: 0? 0.01 0.02 Programmazione - Michele Colajanni, 2003/2004 22

Sistemi di numerazione Posizionali Il valore di un simbolo dipende dalla posizione che esso occupa all interno della configurazione, seguendo una legge nota. I vari sistemi di numerazione posizionale differiscono per la scelta della base B. La base B indica il numero di simboli usati (0,, B-1) Es: decimale, binario, ottale, esadecimale Non posizionali Il valore di un simbolo non dipende dalla posizione che esso occupa all interno della configurazione. Es: Numeri romani Programmazione - Michele Colajanni, 2003/2004 23 Interpretazione dei simboli in un sistema posizionale Nei sistemi posizionali, i simboli di una configurazione possono essere interpretati come i coefficienti del seguente polinomio: V= n 1 i= 0 d i B Numero intero i V= n 1 i= m d i B Numero frazionario i B = base d i = i-esima cifra [0,,B-1] n = numero di cifre della parte intera m = numero di cifre della parte frazionaria (La virgola è posta tra le cifre di posizione 0 e 1) Programmazione - Michele Colajanni, 2003/2004 24

Esempio 1: Sistema decimale Il numero 135.2 decimale può essere rappresentato come segue: B = 10 base n=3 numero cifre parte intera m=1 numero cifre parte frazionaria cifra 1 3 5 2 posizione 2 1 0-1 peso 10 2 10 1 10 0 10-1 1 10 2 + 3 10 1 + 5 10 0 + 2 10-1 = 135.2 Programmazione - Michele Colajanni, 2003/2004 25 Sommario Numeri, numerali e basi Rappresentazione dei numeri interi positivi Base binaria Conversioni Altre basi potenze di 2 Problemi nelle conversioni di base Rappresentazione dei numeri interi Operazioni aritmetiche Rappresentazione dei numeri frazionari Numeri in virgola fissa Numeri in virgola mobile Programmazione - Michele Colajanni, 2003/2004 26

Rappresentazione dei numeri binari La rappresentazione dei numeri usata nei calcolatori è quella binaria. Le cifre binarie prendono il nome di bit (Binary digit). Un numero binario intero è costituito da un vettore di bit. B = b n-1 b 1 b 0 b i = {0, 1} Il valore di B è dato da: V(B) = b n-1 2 n-1 + + b 1 2 1 + b 0 2 0 Un vettore di n bit consente di rappresentare i numeri naturali nell intervallo da 0 a 2 n -1. Per rappresentare i numeri positivi e negativi si usano diversi sistemi Programmazione - Michele Colajanni, 2003/2004 27 Esempio 2: Sistema binario Valore decimale corrispondente al numero binario 1101 2? cifra 2 1 1 0 1 peso 2 3 2 2 2 1 2 0 valore 1 8 1 4 0 2 1 1 1101 2 = 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 13 10 Programmazione - Michele Colajanni, 2003/2004 28

Da base Decimale a Binaria: Numeri interi Per ottenere il valore binario di un numero intero codificato nel sistema decimale si procede utilizzando un metodo iterativo di successive divisioni per 2. Il resto delle divisioni fornisce le cifre del numerale binario (a partire dalla meno significativa) 26 10 26 2 Cifra a destra (meno significativa) 0 13 26) 10 = 11010) 2 1 2 6 0 2 3 1 2 1 Cifra a sinistra (più significativa) Programmazione - Michele Colajanni, 2003/2004 29 Da base Decimale a Binaria: Numeri frazionari Si separa la parte intera da quella frazionaria, La parte intera si calcola come nel caso precedente La parte frazionaria si ottiene come segue: 1. Si moltiplica la parte frazionaria per 2 2. Se il numero ottenuto è maggiore di 1, si sottrae 1 e si considera come prima cifra dopo la virgola un 1. 3. Se invece il numero è nella forma 0,.. ---> la cifra da inserire è uno 0. 4. Si ripete dal passo 1 fino a che il numero di partenza non è zero. Esempio: 0.625 10 =0.101 2 0.625 * 2 = 1.25-1 = 0.25 * 2 = 0.5-0 = 0.5 * 2 = 1-1 = 0 0, 1 0 1 Programmazione - Michele Colajanni, 2003/2004 30

Sistemi di numerazione Ottale ed Esadecimale Quando per la rappresentazione di un numero si utilizzano molte cifre binarie può convenire usare altri sistemi di numerazione. I sistemi ottale ed esadecimale sono utilizzati principalmente per rappresentare in modo più compatto i numeri binari. I simboli del sistema Ottale sono 8: { 0, 1, 2, 3, 4, 5, 6, 7} I simboli del sistema Esadecimale sono 16: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F } Si scelgono basi potenza di 2 perché le regole di conversione da/a numero binario sono molto semplici ed efficienti Programmazione - Michele Colajanni, 2003/2004 31 Binario -> Ottale Conversioni di base Per passare dalla codifica Binaria a quella Ottale, si raggruppano le cifre binarie a gruppi di 3 (a partire da destra) e le si sostituiscono con una cifra del sistema ottale. Esempio : 111 001 010 2 = 712 8 Ottale -> Binario Per passare dalla codifica Ottale a quella Binaria, si sostituisce ad ogni cifra ottale la corrispondente codifica binaria (composta da 3 cifre). Esempio : 302 8 = 011 000 010 2 Programmazione - Michele Colajanni, 2003/2004 32

Conversioni di base (cont.) Binario -> Esadecimale Per passare dal codice Binario a quello Esadecimale, si raggruppano le cifre a gruppi di 4 (a partire da destra) e le si sostituiscono con una cifra del sistema esadecimale. Esempio : 1001 0001 1111 2 = 91F 16 Esadecimale -> Binario Per passare dal codice Esadecimale a quello Binario, si sostituisce ad ogni cifra esadecimale la corrispondente configurazione binaria (composta da 4 cifre). Esempio : A7F 16 =1010 0111 1111 2 Programmazione - Michele Colajanni, 2003/2004 33 Esempio 1 Codifica del numero 125 10 = 1111101 2 In codice Ottale: 1 111 101 In codice Esadecimale: 111 1101 175 7 D Esempio 2 Decimale Binario Ottale Esadecimale 5 101 5 5 12 1100 14 C 78 1001110 116 4E 149 10010101 225 95 Programmazione - Michele Colajanni, 2003/2004 34

Codifica dei primi 16 numeri in quattro sistemi di numerazione Decimale Binario Ottale Esadecimale dcba 0 0000 00 0 1 0001 01 1 2 0010 02 2 3 0011 03 3 4 0100 04 4 5 0101 05 5 6 0110 06 6 7 0111 07 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F Programmazione - Michele Colajanni, 2003/2004 35 Problemi nelle conversioni di base Non sempre si può rappresentare un numero in due basi diverse con un numero finito di cifre. Esempio: Il numero 0.357 in base 10 nonsi può rappresentare finitamente in base 2: 0,357 * 2 = 0,714 (<1) e quindi 0 0,714 * 2 = 1,428 (>1) e quindi 1 0,428 * 2 = 0,856 (<1) e quindi 0 0,856 * 2 = 1,712 (>1) e quindi 1 0,712 * 2 = 1,424 (>1) e quindi 1 0,424 * 2 = 0,848 (<1) e quindi 0 0,848 * 2 = 1,796 (>1) e quindi 1 0,796 * 2 = 1,592 (>1) e quindi 1 0,592 * 2 = 1,184 (>1) e quindi 1 0,184 * 2 = 0,368 (<1) e quindi 0. 0.357 10 finito ---> 0.0101101110 2 Programmazione - Michele Colajanni, 2003/2004 36

Problemi nelle conversioni (cont.) Esempio 2: Il numero 0.15 in base 10 risulta un numero periodico in base 2: 0.15 * 2 = 0.30 (<1) e quindi 0 0.30 * 2 = 0.60 (<1) e quindi 0 0.60 * 2 = 1.20 (>1) e quindi 1 0.20 * 2 = 0.40 (<1) e quindi 0 0.40 * 2 = 0.80 (<1) e quindi 0 0.80 * 2 = 1.60 (>1) e quindi 1 0.60 * 2 = 1,20 (>1) e quindi 1. 0.15 10 finito ---> 0.00(1001) 2 Programmazione - Michele Colajanni, 2003/2004 37 Problemi nelle conversioni (cont.) Esercizio 3 (per chi ha coraggio): Il numero 0.14 in base 10 risulta un numero periodico in base 2. Determinare la sua rappresentazione binaria. Programmazione - Michele Colajanni, 2003/2004 38

Sommario Numeri, numerali e basi Rappresentazione dei numeri interi positivi Rappresentazione dei numeri interi Modulo e segno Complemento a 1 Complemento a 2 Eccesso Operazioni aritmetiche Programmazione - Michele Colajanni, 2003/2004 39 Regola per numeri negativi Nella rappresentazione binaria di numeri dotati di segno viene tipicamente usato un bit per discriminare tra valori positivi e valori negativi. Quindi, per rappresentare gli interi relativi, a parità di cifre si dimezza l intervallo dei valori assoluti rappresentabili Def. (MSB): Most significant bit. Dati n bit per la rappresentazione, MSB è il bit in posizione n-1 (ricordarsi che si conta da 0) Programmazione - Michele Colajanni, 2003/2004 40

Rappresentazione dei numeri interi Modulo e segno Un numero negativo si ottiene fissando ad 1 il bit più significativo. E molto simile alla rappresentazione dei numeri decimali. Complemento a 1 Un numero negativo si ottiene invertendo bit a bit il corrispondente numero positivo. E semplice ottenere la rappresentazione di un numero negativo. Complemento a 2 Un numero negativo si ottiene invertendo bit a bit il corrispondente numero positivo, quindi sommando il valore 1. Ha un unica rappresentazione per il valore 0. Consente di realizzare circuiti più semplici. Eccesso 2 n-1 I numeri vengono rappresentati come somma fra il numero dato e una potenza di 2, in modo che risultino positivi. Programmazione - Michele Colajanni, 2003/2004 41 Modulo e Segno In questo rappresentazione al valore assoluto del numero viene prefisso un bit per indicarne il segno. Il valore 0 di questo bit codifica il segno più e il valore 1 il segno meno. Esempio con n=8 cifre: +57 10 = 00111001 2-57 10 = 10111001 2 segno modulo Programmazione - Michele Colajanni, 2003/2004 42

Modulo e Segno (cont.) Usando n bit (es. 8) per la codifica, il range di valori rappresentabili risulta essere : [-2 n-1 +1,, +2 n-1-1]. Con 8 bit [-127,, +127], perché un bit è usato per il segno. Vi sono due configurazioni per lo zero (non bello!) 00000000 10000000 Poichè le operazioni vanno eseguite sulla sola parte di valore assoluto (modulo) la determinazione dell overflow è semplice (si vedrà in seguito ) Programmazione - Michele Colajanni, 2003/2004 43 Modulo e Segno (cont.) La rappresentazione è vantaggiosa per la sua semplicità L intervallo dei numeri rappresentati (positivi e negativi) è simmetrico Tuttavia, richiede circuiti complessi per l esecuzione di somme algebriche Prima di eseguire una somma algebrica tra due operandi A e B è sempre necessario determinare quale dei due è maggiore in valore assoluto. P.es., nelle sottrazioni: Se A è maggiore di B si esegue la differenza A-B e si assegna al risultato il segno di A Se A è minore di B si esegue la differenza B-A e si assegna al risultato il segno di B Programmazione - Michele Colajanni, 2003/2004 44

Complemento a 1 I numerali positivi iniziano per 0, i negativi per 1 Per cambiare di segno si complementa il numerale bit a bit ( Complementare = cambiare segno) Es., 3 0011-3 1011 Con n bit: [-2 n-1 +1,, +2 n-1-1] Es. n=8 [-127,, +127], È una notazione semi-posizionale perché il MSB non ha peso 2 n-1, ma ha peso (2 n-1 +1) Pesi: (-2 n-1 +1) 2 n-2... 2 1 2 0 Anche in questo caso vi è una doppia rappresentazione dello 0 Programmazione - Michele Colajanni, 2003/2004 45 Complemento a 1 (cont.) Complemento a uno: negazione mediante il complemento bit a bit del numero in valore assoluto a cui si aggiunge uno zero. Rappresentazione poco utilizzata in pratica Programmazione - Michele Colajanni, 2003/2004 46

Esempio Complemento a 1 (cont.) Dati n=4 bit, l intervallo dei numeri rappresentabili è [-2 n-1 +1, +2 n-1-1] = [-7, +7]. I numeri positivisi rappresentano come al solito: 5 10 = 0101 2 I numeri negativi si rappresentano: prendendo il valore assoluto e rappresentandolo come al solito aggiungendo un bit 0 a sinistra complementando a 1 il numero ottenuto (ovvero sostituendo 0 con 1 e 1 con 0) -5 10 101 2 0101 2 1010 2 (equivalente a -7+2) Programmazione - Michele Colajanni, 2003/2004 47 Rappresentazione in complemento a 2 Dati n bit per la codifica del numero con segno, la rappresentazione in complemento a 2 di un numero si ottiene sommando (sottraendo nel caso di numeri negativi) a 2 n il numero codificato in valore assoluto ed eliminando l eventuale bit di posizione n. - Con tale rappresentazione possono essere codificati i valori compresi nell intervallo [-2 n-1, 2 n-1-1] - I numeri positivi restano inalterati -I numeri negativi negativi risultano ottenuti sommando qualche valore positivo al massimo negativo METODO OPERATIVO: i numeri negativi sono calcolabili partendo dal corrispondente valore positivo, invertendo tutti i bit e sommando 1 Programmazione - Michele Colajanni, 2003/2004 48

Da complemento a 2 a decimale Il complemento a 2 è una rappresentazione semi-posizionale perché in una configurazione binaria di n bit, il bit più significativo (MSB, in posizione n-1) assume un peso negativo pari a -2 n-1 n 2 n 1 i V = 2 d + [ 0,1 ] 10 n 1 d i 2 i= 0 Di conseguenza, i numeri positivi (avendo d n-1 =0) codificati in complemento a 2 rimangono inalterati, mentre i numeri negativi risultano ottenuti sommando qualche valore positivo al massimo negativo (-2 n-1 ) 1011 2 in complemento a 2 equivale a: 1011 2 = 1 (-2 3 ) + 0 2 2 + 1 2 1 +1 2 0 = -8 + 0 + 2 +1 = -5 10 d i 0111 2 in complemento a 2 equivale a : 0111 2 = 0 (-2 3 ) + 1 2 2 + 1 2 1 +1 2 0 = 0 + 4 + 2 +1 = +7 10 Programmazione - Michele Colajanni, 2003/2004 49 Complemento a 2 Complemento a due: negazione mediante complemento a 1, e somma di 1. Notazione non completamente posizionale Programmazione - Michele Colajanni, 2003/2004 50

Complemento a 2 (cont.) Esempio (Metodo operativo) Dati n=4 bit, l intervallo dei numeri rappresentabili è [-2 n-1, +2 n-1-1] = [-8, +7]. I numeri positivisi rappresentano come al solito: 5 10 = 0101 2 I numeri negativi si rappresentano: prendendo il valore assoluto e rappresentandolo come al solito aggiungendo tanti bit 0 a sinistra fino a raggiungere n bit complementando a 1 il numero ottenuto sommando 1-5 10 101 2 0101 2 1010 2 1011 2 Programmazione - Michele Colajanni, 2003/2004 51 Motivazione del metodo operativo Il numero X in complemento a 2 ha la stessa sequenza di bit del numero 2 n -X rappresentato in binario puro: -74 10110110 (complemento a 2) 256-74=182 10110110 (binario puro) Il metodo operativo rappresenta, invece di X, proprio 2 n -X Perché calcolare 2 n -X è più efficiente? 2 n -X = (2 n -1-X)+1 Questa è una sottrazione molto efficiente da calcolare perché 2 n -1 è una sequenza di tutti 1 e quindi (2 n -1-X) si ottiene invertendo tutti i bit della rappresentazione di X (ovvero complementando a 1 la rappresentazione di X) A questo punto, per ottenere la rappresentazione cercata, basta aggiungere il +1 fuori parentesi Programmazione - Michele Colajanni, 2003/2004 52

Proprietà del complemento a 2 Vi è una sola rappresentazione per lo zero Il complemento di una somma algebrica è uguale alla somma aritmetica dei complementi. Operativamente non vi è differenza nell eseguire somme o sottrazioni. Quindi, non è necessario individuare il maggiore (in valore assoluto tra i due operandi) come nel caso della rappresentazione Modulo-Segno. Applicando due volte la regola del complemento a 2 si ottiene il numero originale: -5 10 in complemento a 2 risulta 1011 2 Applicando nuovamente il complemento a 2 si ottiene il valore positivo del numero e viceversa -5 10 1011 2 0100 2 0101 2 = + 5 10 Programmazione - Michele Colajanni, 2003/2004 53 Rappresentazione in Eccesso k È possibile definire rappresentazioni in eccesso k, dove k è un numero qualsiasi L eccesso potenza di 2 è solo un caso particolare, anche se molto interessante Rappresentando un intero m in eccesso k con n bit, si rappresenta in realtà il numero positivo k+m Deve comunque valere: k 2 n L intervallo dei numeri rappresentabili dipende sia da k che da n: [-k, 2 n -k-1] Esempi n=8, k=127 [-127,+128] n=8, k=100 [-100,+155] n=8, k=50 [-50,+205] Programmazione - Michele Colajanni, 2003/2004 54

Rappresentazione in Eccesso 2 n-1 I numeri vengono rappresentati come somma fra il numero dato e una potenza di 2. Con n bit si rappresenta l eccesso 2 n-1 Intervallo come complemento a 2: [-2 n-1, +2 n-1-1] Metodo operativo: I numerali si ottengono da quelli in complemento a 2 complementando il bit più significativo Esempio n=4 bit: eccesso 8, intervallo [-8,+7] - 3 10-3+8 = 5 : 0101 2 +4 10 +4+8 = 12 : 1100 2 Intervallo asimmetrico Rappresentazione unica dello 0 Programmazione - Michele Colajanni, 2003/2004 55 Rappresentazione in Eccesso 2 n-1 (cont.) Dato un numero m determinare il numero minimo di cifre n min necessarie Determinare la prima potenza di 2 superiore al modulo di m e confrontarla con gli estremi dell intervallo Esempio Convertire (-347) 10 in eccesso 2 n-1 2 8 = 256 < 347 < 512 = 2 9 Intervallo con n bit: [-2 n-1,+2 n-1-1] e pertanto n min =10 512-347 = 165 165 = 128+32+4+1 512 256 128 64 32 16 8 4 2 1 (-347) 10 in eccesso 2 9 è: 0 0 1 0 1 0 0 1 0 1 Programmazione - Michele Colajanni, 2003/2004 56

Confronto tra rappresentazioni B V(B) b 2 b 1 b 0 Modulo e segno Complemento a 1 Complemento a 2 000 +0 +0 +0 001 +1 +1 +1 010 +2 +2 +2 011 +3 +3 +3 100-0 -3-4 101-1 -2-3 110-2 -1-2 111-3 -0-1 Programmazione - Michele Colajanni, 2003/2004 57 Confronto tra rappresentazioni (cont.) Decimale M-S CP1 CP2 Ecc 8 + 7 0111 0111 0111 1111 + 6 0110 0110 0110 1110 + 5 0101 0101 0101 1101 + 4 0100 0100 0100 1100 + 3 0011 0011 0011 1011 + 2 0010 0010 0010 1010 + 1 0001 0001 0001 1001 + 0 0000 0000 0000 1000-0 1000 1111 ----- ----- - 1 1001 1110 1111 0111-2 1010 1101 1110 0110-3 1011 1100 1101 0101-4 1100 1011 1100 0100-5 1101 1010 1011 0011-6 1110 1001 1010 0010-7 1111 1000 1001 0001-8 ---- ---- 1000 0000 Programmazione - Michele Colajanni, 2003/2004 58