LA NUMERAZIONE BINARIA

Documenti analoghi
4 3 4 = 4 x x x 10 0 aaa

SISTEMI DI NUMERAZIONE E CODICI

Alessandro Pellegrini

Informatica. Rappresentazione dei numeri Numerazione binaria

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

la scienza della rappresentazione e della elaborazione dell informazione

Elementi di Informatica e Programmazione

Sistemi di Numerazione

Informazione analogica e digitale

Rappresentazione dei numeri in un calcolatore

SISTEMI DI NUMERAZIONE IL SISTEMA DECIMALE

RAPPRESENTAZIONE BINARIA DEI NUMERI. Andrea Bobbio Anno Accademico

Dispense di Informatica per l ITG Valadier

Aritmetica dei Calcolatori 1

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Architettura degli Elaboratori I Esercitazione 1 - Rappresentazione dei numeri

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

Codici Numerici. Modifica dell'informazione. Rappresentazione dei numeri.

Sistemi di Numerazione Binaria NB.1

4. Operazioni aritmetiche con i numeri binari

Codifica binaria dei numeri relativi

Parte II Indice. Operazioni aritmetiche tra valori rappresentati in binario puro. Rappresentazione di numeri con segno

I sistemi di numerazione

Codifica dei numeri negativi

Elementi di informatica

La codifica delle informazioni

BIT? Cosa c è dietro a questo nome? Che cos è il bit? Perché si usa? Come si converte un numero binario?

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

2. Codifica dell informazione

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Codifica binaria dei numeri

Informatica Generale 02 - Rappresentazione numeri razionali

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Rappresentazione delle informazioni

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

Logica e codifica binaria dell informazione

I SISTEMI DI NUMERAZIONE

ESEMPIO 1: eseguire il complemento a 10 di 765

Sistema di numerazione binario, operazioni relative e trasformazione da base due a base dieci e viceversa di Luciano Porta

I SISTEMI DI NUMERAZIONE

la scienza della rappresentazione e della elaborazione dell informazione

= 1*2^7 + 1*2^6 + 0*2^5 + 1*2^4 + 0*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 210

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

Definizioni iniziali

Convertitori numerici in Excel

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Operazioni Aritmetiche e Codici in Binario Giuseppe Talarico 23/01/2013

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

Fondamenti di Informatica

Laboratorio di Informatica

Codifica binaria e algebra di Boole

Calcolatori: Algebra Booleana e Reti Logiche

2.12 Esercizi risolti

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dell informazione negli elaboratori

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Esempi ed esercizi Aritmetica degli elaboratori e algebra di commutazione

RAPPRESENTAZIONE DEI NUMERI BINARI. Corso di Fondamenti di Informatica AA

Parte 1. Vettori di bit - AA. 2012/13 1.1

APPUNTI DI ELETTRONICA DIGITALE

ALGEBRA DELLE PROPOSIZIONI

Appunti sulla Macchina di Turing. Macchina di Turing

Operazioni binarie fondamentali

Esercitazione Informatica I AA Nicola Paoletti

Il simbolo. è è = = = In simboli: Sia un numero naturale diverso da zero, il radicale. Il radicale. esiste. esiste 0 Il radicale

Fondamenti di Informatica 2. Le operazioni binarie

LE SUCCESSIONI 1. COS E UNA SUCCESSIONE

- Sistemi di numerazione 1 - Sistemi di Numerazione

Modulo 8. Elettronica Digitale. Contenuti: Obiettivi:

Lezione 3. Sommario. Le operazioni aritmetiche binarie. L aritmetica binaria. La somma La sottrazione La moltiplicazione

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l Ambiente e il Territorio

IL CODICE BINARIO. Il codice binario. Codifica posizionale. Aritmetica binaria

Rappresentazione dell informazione Codifica Binaria

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

La codifica dell informazione

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Informatica Generale (Prof. Luca A. Ludovico) Presentazione 5.1 Operazioni aritmetiche nel sistema binario

Esercitazioni su rappresentazione dei numeri e aritmetica dei calcolatori"

CODIFICA BINARIA. ... sono rappresentati ricorrendo a simboli che sintezzano il concetto di numerosità.

Strutturazione logica dei dati: i file

Materiale di approfondimento: numeri interi relativi in complemento a uno

Variabili e tipi di dato

Lezioni di Matematica 1 - I modulo

1 Sistema additivo e sistema posizionale

Schemi delle Lezioni di Matematica Generale. Pierpaolo Montana

Rappresentazione di informazioni con un alfabeto finito

Matematica generale CTF

Memorie ROM (Read Only Memory)

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

PROPRIETA' ASSOCIATIVA La somma di tre o più addendi non cambia se al posto di alcuni di essi si sostituisce la loro somma.

La somma. Esempio: Il prodotto. Esempio:

Numeri naturali numeri naturali minore maggiore Operazioni con numeri naturali

1. PRIME PROPRIETÀ 2

Logica Numerica Approfondimento 1. Minimo Comune Multiplo e Massimo Comun Divisore. Il concetto di multiplo e di divisore. Il Minimo Comune Multiplo

4. Operazioni elementari per righe e colonne

Dimensione di uno Spazio vettoriale

Iniziamo con un esercizio sul massimo comun divisore: Esercizio 1. Sia d = G.C.D.(a, b), allora:

Lezione 8. La macchina universale

1. LE GRANDEZZE FISICHE

razionali Figura 1. Rappresentazione degli insiemi numerici Numeri reali algebrici trascendenti frazionari decimali finiti

Psicometria (8 CFU) Corso di Laurea triennale STANDARDIZZAZIONE

Transcript:

LA NUMERAZIONE BINARIA 5

I SISTEMI DI NUMERAZIONE Fin dalla preistoria l uomo ha avuto la necessità di fare calcoli, utilizzando svariati tipi di dispositivi: manuali (mani, bastoncini, sassi, abaco), meccanici ed elettronici. Figura 1 - L'abaco Per fare i calcoli l uomo ha bisogno di regole, cioè un sistema di numerazione. Il sistema di numerazione, infatti, è una tecnica che consente la rappresentazione dei valori numerici. Un numero si compone di cifre, cioè di simboli ad ognuno dei quali viene associato univocamente un valore diverso dagli altri. I sistemi di numerazione moderni sono sistemi di numerazione posizionali, ovvero una stessa cifra ha un peso diverso dipendentemente dalla posizione che essa occupa all interno del numero in questione. Per esempio nel numero 44, la cifra 4 che si trova a sinistra vale 10 volte di più di quella che le sta immediatamente a destra. Da ciò nasce il concetto di base: la base indica il numero di cifre a disposizione del sistema di numerazione e, di conseguenza, quante volte di più vale la stessa cifra man mano che questa occupa una posizione sempre più a sinistra all interno di un numero. Il sistema di numerazione decimale, o a base 10, con il quale si ha a che fare quotidianamente, ha dieci cifre diverse (da 0 a 9 ) ed ogni cifra assume un significato 10 volte maggiore per ogni posizione che essa occupa spostandosi verso sinistra all interno di un numero. Pertanto si può pensare che ad ogni posizione all interno di un numero sia associato un peso che non è altro che una potenza della base del sistema di numerazione considerato. In generale, possiamo parlare di sistema di numerazione in base B, se abbiamo a disposizione B simboli (alfabeto) per poter rappresentare tutte le possibili sequenze. 6

SISTEMA DECIMALE Il sistema decimale è quello utilizzato comunemente dall uomo per fare i calcoli. Questo sistema ha 10 simboli di base, che raggruppati in opportune sequenze rappresentano tutti i possibili numeri naturali. Una cifra decimale può assumere solo 10 possibili valori: {0,1,2,3,4,5,6,7,8,9} Un numero decimale è una combinazione di cifre; a seconda della posizione la cifra assume un peso differente secondo le potenze di 10 crescenti, a partire dalla posizione a destra (cifra meno significativa). Il sistema decimale è inoltre posizionale: il significato di ogni cifra dipende dalla sua posizione nella sequenza che costituisce il numero da rappresentare (7465 è diverso da 6475). 1 a posizione: la cifra viene moltiplicata per 1 (10 0 ). 2 a posizione: la cifra viene moltiplicata per 10 (10 1 ). 3 a posizione: la cifra viene moltiplicata per 100 (10 2 ). Ecc. Esempio: 357 10 = 3*10 2 + 5*10 1 + 7*10 0 Rappresentiamo con l abaco alcuni numeri in base 10: Osserviamo che una decina corrisponde a 10 unità semplici, che un centinaio corrisponde a 10 decine ciascuna delle quali corrisponde a 10 unità semplici. Pertanto un centinaio corrisponde a 100 unità semplici. 7

IL SISTEMA BINARIO La codifica binaria si basa su un sistema di numerazione binario (base 2) in cui i simboli che compongono l alfabeto sono solamente 2 (lo 0 e l 1). Un sistema così fatto ha indubbiamente l importante vantaggio di poter rappresentare (e manipolare) facilmente i dati binari all interno del calcolatore. Per distinguere la base utilizzata, viene utilizzato un pedice: I numeri in base 10 saranno scritti come 463 10 e 8.32 10. I numeri in base 2 saranno scritti invece come 1010 2 e 1011 2. Attenzione che questi ultimi due numeri binari non si pronunciano, rispettivamente, mille-dieci e mille-undici, ma, uno-zero-uno-zero e uno-zero-uno-uno, cioè scandendo cifra per cifra. Il sistema binario è utilizzato dai calcolatori e altri dispositivi elettronici digitali per fare i calcoli. Ogni elemento che assume un valore binario viene indicato con il termine bit (da binary digit, cifra binaria). Il bit rappresenta l unità elementare di informazione, una scelta tra si e no, tra vero e falso, tra acceso e spento, due risposte che possono essere associate ai valori "0" e "1". Il funzionamento dei circuiti elettrici di tutti i calcolatori moderni è basato su due stati elementari: la presenza oppure l'assenza di un segnale elettrico. NB. Rimandiamo al relativo capitolo per approfondimenti sul bit, Byte e multipli. Il bit può assumere 2 valori: A seconda della posizione il bit assume un peso differente e viene moltiplicato per potenze di 2 crescenti, partendo dalla posizione a destra (bit meno significativo): 1 a posizione: la cifra viene moltiplicata per 1 (2 0 ). 2 a posizione: la cifra viene moltiplicata per 2 (2 1 ). 3 a posizione: la cifra viene moltiplicata per 4 (2 2 ). Ecc. Esempio: 101 2 = 1*2 2 + 0*2 1 + 1*2 0 = 4 + 0 + 1 = 5 10 8

Nell esempio possiamo osservare come sia stato possibile ottenere il numero decimale conoscendo il corrispondente numero binario (decodifica). Rappresentiamo con l abaco alcuni numeri in base 2: 9

Il Byte Rappresenta l insieme di 8 bit. Può rappresentare valori compresi tra 0 e 255. Esempio: 10

CODIFICA (o CODICE) La codifica è la modalità di rappresentazione di un insieme di informazioni, attraverso un opportuno insieme di simboli. Esempi Codice Morse: ad ogni lettera viene assegnata una sequenza di punti e linee. Codifica digitale: utilizzata per la conversione di un segnale analogico in digitale. Codifica binaria La codifica binaria è la rappresentazione dell informazione (caratteri alfanumerici, immagini, suoni, video, ecc.) effettuata utilizzando un alfabeto limitato a soli due simboli (0 e 1), a causa della capacità dei dispositivi elettronici (i transistori) di un elaboratore di salvare solo cifre binarie (corrispondenti ai due possibili stati logici di un circuito elettrico: aperto o chiuso). Codifica binaria dei numeri interi In questa codifica i numeri, interi, vengono tradotti in sequenze binarie. Con 8 bit (n bit) possiamo memorizzare (codificare) 256 simboli differenti. Se i simboli sono numeri interi senza segno, allora, i numeri saranno compresi fra 0 e 255 (2 n -1). Se i simboli sono numeri interi con segno i numeri saranno compresi fra -128 (-2 n-1 ) e +127 (2 n-1-1). Utilità L'univocità della rappresentazione gioca un ruolo cruciale in tutte le applicazioni della codifica (il procedimento di trasportare gli elementi dalla rappresentazione di partenza a quella definita dal codice) e di decodifica (l'inverso). I codici risultano utili quando la comunicazione verbale normale non è sufficiente o non è praticabile. Con un'opportuna codifica è possibile descrivere realtà ben più complesse del lessico del linguaggio naturale, come ad esempio un'immagine o una serie di suoni. 11

L ARITMETICA DEI CALCOLATORI 1+1= 10????? impossibile L'aritmetica dei computer, a causa della necessità pratica di avere una rappresentazione standard dei numeri mediante un numero finito e prefissato di bit, gode di caratteristiche e proprietà diverse da quelle dell' aritmetica degli interi o dei reali della matematica. Sugli interi la principale differenza proviene dal fatto che, con n bit disponibili, è possibile rappresentare solo 2 n numeri diversi. Questo comporta l'esistenza di un minimo ed un massimo tra gli interi rappresentabili. E' inoltre alla base della possibilità di implementare in modo semplice l'aritmetica modulo 2 n. Se l'aritmetica intera (le operazioni tra interi) viene implementata in modo che esista il successivo del massimo intero e questo sia il minimo intero e, viceversa, esista il precedente del minimo e questo sia il massimo l'aritmetica del computer diviene un' implementazione dell' aritmetica modulo 2 n come definita in algebra (si ricorda che l'aritmetica modulo p corrisponde all'adattamento dell'aritmetica usuale agli insiemi i cui elementi siano classi di equivalenza di numeri interi rispetto alla relazione di equivalenza costituita dalla proprietà "avere lo stesso resto nella divisione per p"). Per i reali, le differenze sono maggiori. Di nuovo, invece di un insieme illimitato (i reali dell'analisi) si deve usare una "rappresentazione" dotata di minimo e di massimo. Ma in più, sempre per la necessità di lavorare con un numero finito di bit, si perde anche la proprietà di densità dei reali: tra due "reali" del computer ce n'è sempre un numero finito (eventualmente zero). Infine, come vedremo, la spaziatura tra i "reali" del computer non è uniforme e queste proprietà peculiari determinano la principale differenza tra operazioni con i reali dell' analisi e i "reali" del computer. Pur valendo sempre la proprietà commutativa, cessano di avere validità generale la proprietà associativa e distributiva delle operazioni elementari. Pertanto, formule equivalenti secondo l'aritmetica dei reali, divengono inequivalenti sul computer. Uno dei compiti dell' analisi numerica è quello di chiarire la portata quantitativa di queste inequivalenze e gli effetti sugli algoritmi numerici. Sia la rappresentazione e l aritmetica degli interi, sia quella dei reali sono oggetto di accordi internazionali per la definizione di standard. I sistemi attualmente più diffusi sono l aritmetica modulo 2 n con complemento a due per gli interi (possibilità prevista dallo standard IEC 10967 accanto ad un aritmetica intera superiormente e inferiormente limitata) e quello definito nello IEEE Standard for Binary Floating point Arithmetic (ANSI/IEEE Std 754-1985, ora IEC 60559) (più brevemente "IEEE 754 " ) per i "reali". 12

Rappresentazione degli interi La rappresentazione più diretta dei 2 n interi tra 0 e 2 n -1 è quella che utilizza la rappresentazione binaria posizionale degli interi. Ricordiamo che la notazione decimale posizionale, cui siamo abituati, è quella in cui il significato di uno dei dieci simboli di base (le cifre 0,1,2,3,4,5,6,7,8,9) dipende dalla posizione di questo all'interno della sequenza di cifre. P. es. il numero 361 va interpretato come: 3 centinaia + 6 decine + 1 unità. Ovvero: 3*10 2 + 6*10 1 + 1*10 0 Se invece di usare le dieci cifre usuali ne usiamo solo due (0,1 rappresentabili in un circuito mediante tensione alta e tensione bassa) avremo la possibilità di una rappresentazione posizionale in base due in cui un numero è costituito unicamente da una sequenza di 0 e 1. P.es.: 11010 va interpretato come 1*2 4 + 1*2 3 + 0*2 2 + 1*2 1 + 0*2 0 Ovvero, indicando con un sottoscritto 10 oppure 2 la rappresentazione in base 10 o 2 rispettivamente, 11010 2 = 26 10 Se l'aritmetica (le operazioni tra interi) viene implementata in modo che esista il successivo del massimo intero (e questo sia il minimo intero) e, viceversa, esista il precedente del minimo (e questo sia il massimo) l' aritmetica del computer diviene esattamente l'aritmetica modulo 2 n come definita in algebra. Questa possibilità è quella "naturale" per un computer perché le operazioni aritmetiche sono svolte su dati rappresentati in registri (speciali circuiti) del processore sotto forma di un numero fisso di bit. Facciamo l'esempio di un intero (senza segno) rappresentato in registri a 8 bit. Potrebbe essere: 1 1 1 1 1 1 1 0 pari a 254. Se adesso sommiamo 3 (11 2 ) a questo numero dovremmo ottenere: 1 0 0 0 0 0 0 0 1 cioè 257. Però la cella grigia non esiste nel registro del nostro processore. Quindi il bit corrispondente "si perde" lasciando come risultato l'intero contenuto nelle sole celle bianche: 1 che corrisponde a 257 mod 2 8 (mod è l operatore matematico che calcola il resto di una divisione, per es. 20 mod 2 = 0). Se abbiamo a disposizione n bit e vogliamo rappresentare interi negativi e positivi (in numero uguale), la soluzione più semplice è quella di usare uno dei bit per indicare il segno e gli altri per la 13

rappresentazione in base 2 usuale. In questo caso potremo rappresentare 2 n-1 interi positivi (da +0 a 2 n-1-1) e 2 n-1 interi negativi (da -0 a -2 n-1 + 1). Da notare che in tal modo esisterebbero due diverse rappresentazioni dello zero e il range dei positivi sarebbe lo stesso dei negativi. Tuttavia, questo metodo di rappresentazione non è il più agevole per implementare l' aritmetica modulo 2 n. A questo scopo esistono due diverse rappresentazioni degli interi con segno utilizzate in modo standard nell' aritmetica dei computer contemporanei. La rappresentazione con bias (distorsione, forse meglio traducibile in questo caso con traslazione) e quella a complemento a due. In entrambe, gli interi tra -2 n-1 e 2 n-1-1 hanno un' unica rappresentazione mediante sequenze di n bit consecutive nell' aritmetica modulo 2 n. Quello che cambia tra le due rappresentazioni è solo l' associazione tra sequenze di 0 e 1 ed interi nell' intervallo in questione. Nella rappresentazione con complemento a due lo zero è associato alla sequenza di n zeri, mentre in quella con bias B = 2 n-1-1 il valore binario (senza segno) del bias B nella rappresentazione posizionale diviene la rappresentazione dello zero mentre il numero le cui cifre sono tutte zero rappresenta il valore -B. In pratica, per ottenere la rappresentazione complemento a due di un numero negativo, basta invertire tutti i bit della rappresentazione binaria del numero positivo (gli zeri diventano uno e gli uno diventano zero) e poi sommare uno al risultato. La spiegazione di questo algoritmo è semplice: con la notazione complemento a due vogliamo poter fare la somma tra numeri positivi e negativi esattamente con lo stesso algoritmo (circuiti) che manipola la somma tra numeri positivi. Questo implica che se sommiamo ad un numero positivo il corrispondente negativo dobbiamo trovare zero. Facendo riferimento alla discussione sopra accennata, si vede che se si somma ad un numero positivo la sequenza di bit invertiti si ottiene un numero fatto solo dalle cifre 1. Aggiungendo un ulteriore 1 si ottiene zero (con quel numero di bit). Da cui l' algoritmo del complemento a due. Un modo complementare di considerare la notazione per i negativi del complemento a due è di interpretare il bit più significativo come coefficiente della corrispondente potenza di due ma cambiata di segno: 10101110 = -2 7 + 2 5 +2 3 +2 2 +2 1. Come esempio, la tabella seguente mostra quale è l'associazione tra sequenze di 8 bit ed valori interi con segno nelle tre rappresentazioni qui descritte (con bias = 127). sequenza di bit interi con segno complemento a 2 bias 127 0000 0000 0 0-127 0000 0001 1 1-126............ 0111 1110 126 126-1 0111 1111 127 127 0 1000 0000-0 -128 1 1000 0001-1 -127 2............ 1111 1111-127 -1 128 14

CODIFICA BINARIA POSIZIONALE CONVERSIONE DA DECIMALE A BINARIO (CODIFICA) DI NUMERI NATURALI: DEC BIN Vediamo come si converte un numero intero positivo in binario. Metodo 1 (metodo pratico) Esempio: convertire questo numero sulla base di 8 bit. 40 10 40 < 2 6 n = 6 Imposto la tabella a 8 bit, segnando i pesi binari per ogni cifra. 128 64 32 16 8 4 2 1 PESI 0 0 1 0 1 0 0 0 BIT Individuo quali pesi sommare fra loro al fine di ottenere il numero decimale 40; in corrispondenza di questi pesi segno cifra 1, e altrove segno 0. Ottengo: 00101000 2 E come si nota le prime due cifre più significative sono 0 e quindi è rispettato il calcolo che per rappresentare il 40 bastano 6 bit, ma le memorie del calcolatore scelto è da 8 bit, e i bit li devo considerare tutti e 8. Metodo 2 (formale) Per convertire un numero naturale N in binario occorre divide ripetutamente per la base 2 del sistema binario e scrivere ordinatamente i valori dei resti ottenuti, a partire dalla posizione meno significativa. 15

Esempio: 40 10 40 2 20 0 10 0 5 0 2 1 1 0 0 1 Ottengo: 101000 2 e a parte le due cifre a 0 più significative, coincide con il precedente risultato (a 8 bit). Quindi, a questo risultato DEVONO essere aggiunti i 2 zeri più significativi. 16

CONVERSIONE DA BINARIO A DECIMALE DI NUMERI NATURALI (DECODIFICA): BIN DEC Metodo 1 (metodo pratico) identico al caso DEC BIN Esempio (4 bit): 1110 2 8=2 3 4=2 2 2=2 1 1=2 0 1 1 1 0 Esempi importanti (n=8): 2 n -1 = 255 2 n-1-1 = 127 2 n-1 = 128 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 Metodo 2 (formale) Notazione posizionale. Esempio (4 bit): 1110 2 1*2 3 + 1*2 2 + 1*2 1 + 0*2 0 = 8 + 4 + 2 + 0 = 14 10 Esempio (4 bit) 17

ARITMETICA BINARIA L aritmetica binaria consiste nelle operazioni di addizione, sottrazione, moltiplicazione e divisione tra numeri binari. L aritmetica binaria si basa sugli stessi principi dell aritmetica decimale applicate su solo due cifre (ricordiamo che il bit può assumere due valori logici differenti, 0 e 1) anziché dieci. Addizione + 0 1 0 0 1 1 1 (1)0 Riporto: 1 + 1 (= 2 10 ) = 10 2 1+1=0 (CON RIPORTO 1) Riporto: 1 + 1 + 1 (= 3 10 ) = 11 2 1+1+1=1 (CON RIPORTO 1) Mentre nel sistema decimale il riporto, alla posizione superiore (quella immediatamente alla sinistra) si ha quando si oltrepassa la cifra 9; nel sistema binario si ha riporto, analogamente, quando si oltrepassa la cifra 1. NB Nel sistema binario, dopo la cifra 1 non esiste la cifra 2, ovviamente. Esempio: BINARIO DECIMALE 16 8 4 2 1 PESI 1 1 1 1 RIPORTI 1 1 1 1 + 15 + 0 1 1 = 3 = 1 0 0 1 0 18 Esempio: 110 2 + 10 2 = 1000 2 1 1 1 1 0 + 6 1 0 = 2 --------------- 1 0 0 0 8 18

Sottrazione Metodo 1 (formale) - 0 1 0 0 (1)1 1 1 0 Prestito (borrow): 10 2 1 2 (= 2 10 1 10) = 01 2 0-1=1 (CON PRESTITO 1) Analogamente al sistema decimale si ha un prestito, dalla cifra alla sinistra, quando la sottrazione delle due cifre porta ad un risultato negativo: 0 1 non si può fare quindi prendo in prestito l 1 dalla sinistra, e faccio 10 1 e il risultato è 1. Nel sistema decimale se facciamo 20 3, 0 3 non si può fare quindi prendo in prestito una cifra dalla sinistra, e faccio 10-3=7; la cifra alla sinistra 2 è diventata 1 e quindi: 1 2 0-3 = 1 7 2 2 10 10 0 0 1 1 1 1 0-30 1 1 = 3 1 1 0 1 1 27 Esempi vari 0 10 0 10 PRESTITI 1 0 1 0-1 0 1 = 0 1 0 1 1010 2 =2+8=10 10 101 2 =1+4=5 10 DEC 1000 100 10 1 PESI 2 9 PRESTITI 4 3 0 2-3 2 5 9 = 1 0 4 3 19

DEC 1000 100 10 1 PESI 8 9 9 PRESTITI 9 0 0 0-2 = 8 9 9 8 DEC BIN 8 4 2 1 PESI 11-1 0 1 1-10 = 1 0 1 0 = 1 0 0 0 1 DEC BIN 8 4 2 1 PESI 0 1 PRESTITI 4-1 0 0-1 = 0 0 1 = 3 0 1 1 DEC BIN 8 4 2 1 PESI 0 0 1 PRESTITI 12-1 1 0 0-5 = 1 0 1 = 7 0 1 1 1 DEC BIN 8 4 2 1 PESI 0 0 1 PRESTITI 12-1 1 0 0-5 = 1 0 1 = 7 0 1 1 1 20

DEC BIN 8 4 2 1 PESI 0 1 1 PRESTITI 8-1 0 0 0-7 = 1 1 1 = 1 0 0 0 1 Metodo 2 (complemento a 2) La sottrazione attraverso la regola del complemento a 2 Complemento ad 1 Sotto il termine di complemento ad 1 di un numero binario si intende la differenza tra la configurazione di tutti '1' del codice ed il numero dato. Il complemento ad 1 di 'A' e' simbolicamente indicato dall'apice 1 che precede la variabile 'A'; es: 1 A Per il calcolo si procede nel modo indicato dalla definizione. Es: sia A = '0110 1101' la configurazione binaria di cui si vuole calcolare il complemento a 1: 1111 1111 - (configurazione con tutti i bit a '1') 0110 1101 = (A) --------------- 1001 0010 ( 1 A = complemento ad 1 di A) Quindi: 1 '0110 1101' = '1001 0010'. Da notare che non e' un caso particolare che il risultato coincida con la configurazione negata di A (not A). Infatti vale sempre la relazione: 1 A = not(a) pertanto, calcolare il complemento ad 1 di 'A' equivale a dire di calcolare la negazione di 'A'. Ciò deriva direttamente dal fatto che sottrarre il bit 'x' da 1, da' come risultato 'x' negato, ossia not(x). 21

Complemento a 2 Il complemento a 2 di un numero, è uguale alla sua sottrazione da 2 N, dove con 'N' si è indicato il numero di bit impiegati per la rappresentazione del codice. Il numero da complementare deve essere minore di 2 (N-1). Il complemento a 2 di 'A' è simbolicamente indicato dall'apice 2 che precede la variabile 'A'; es: 2 A In definitiva: 2 A = 2 N - A Es: Rappresentazione dei numeri a 8 bit: N = 8 2 N = 2 8 = 256 = '1 0000 0000' 2 (N-1) = 2 7 = 128 = '1000 0000' I numeri da rappresentare in complemento a 2 devono quindi essere minori di 128, ossia <= '0111 1111'. In realtà esiste un'eccezione. Per il calcolo si procede nel modo indicato dalla definizione. Es: sia A = '0110 1101' la configurazione binaria di cui si vuole calcolare il complemento a 2: 1 0000 0000 - (configurazione corrispondente a 2 8 ) 0110 1101 = (A) ----------------- 1001 0011 ( 2 A = complemento a 2 di A) Non è affatto casuale che il complemento a 2 di un numero sia maggiore di 1 del complemento a 1 dello stesso numero. Infatti 2 N = '1 0000 0000' = '1111 1111' + 1 Quindi 2 A = 2 N - A = 100000000 - A = = (11111111 + 1) - A = (11111111 - A) + 1 = 1 A + 1 C.V.D. # Uno dei metodi di rappresentazione di numeri negativi è proprio la rappresentazione in complemento a 2, tramite la quale è possibile trasformare una sottrazione binaria in una somma. Per esempio è dimostrabile che la differenza può essere sempre ricondotta alla somma A - B 22

A + 2 B Analogamente la somma A + (-B) equivale alla somma A + 2 B Il bit di peso maggiore o 'Most Significant Bit' (MSB) e' riservato al segno del numero rappresentato è viene quindi chiamato bit di segno. Il bit di segno = 1, indica che il numero è negativo. Per risalire al numero rappresentato, è sufficiente ricalcolare il complemento a 2 dell'intero numero (compreso il bit di segno). Infatti vale la proprietà che 2 ( 2 A) = A Per convincersi: 2 ( 2 A) = 2 N - (2 N - A) = 2 N - 2 N + A = A C.V.D. # ECCEZIONE: In precedenza ho detto che il valore del numero per cui calcolare il complemento a due deve essere < 2 (N-1). Cioè strettamente vero per la rappresentazione dei numeri positivi (che non devono essere complementati a 2), ma in realtà per la rappresentazione di un numero negativo è ammesso il range fino a 2 (N-1) compreso. Ecco così spiegato perché' un Byte può rappresentare i valori compresi fra: 0..255 se trattasi di numeri interi senza segno. -128..0..+127 se trattasi di numeri interi con segno. DEFINIZIONE DI COMPLEMENTO A 1 Complementare (a 1) un numero binario significa trasformare ogni bit a 0 in 1 e ogni bit a 1 in 0. Esempio: complementare a 1 il numero binario 1011. 1 0 1 1 NUM.BINARIO 0 1 0 0 CMP1 23

DEFINIZIONE DI COMPLEMENTO A 2 Dopo aver ottenuto il complemento a 1 del numero binario dato, come indicato nella precedente definizione, occorre sommare 1 al risultato ottenuto. Esempio: complementare a 2 il numero binario 1100: 1 1 0 0 NUM.BINARIO 0 0 1 1 CMP1 1 1 RIPORTI 0 0 1 1 + CMP1 1 = 0 1 0 0 CMP2 SOTTRAZIONE MEDIANTE IL COMPLEMENTO A 2 Sulla base di 8 bit: 0 1 0 0 1 0 1-0 0 0 1 0 1 0 = 0 1 0 0 1 0 1 + 1 1 1 0 1 0 1 + 1 = 1 0 0 1 1 0 1 1 Fuori memoria (da 8 bit) NON LO CONSIDERO 100101 2 =1+4+32=37 10 1010 2 =2+8=10 10 11011 2 =1+2+8+16=27 10 24

Moltiplicazione * 0 1 0 0 0 1 0 1 Esempio: 111010 * 1011 = 58 10 * 11 10 = 638 10 1 1 1 0 1 0 * 58 1 0 1 1 = 11 1 1 1 0 1 0 + 1 1 1 0 1 0 - + 0 0 0 0 0 0 - - + 1 1 1 0 1 0 - - - = 1 0 1 0 1 1 1 0 + 1 1 1 0 1 0 0 0 0 = 1 0 0 1 1 1 1 1 1 0 638 1 0 1 1 x 1 0 1 = 1 0 1 1 0 0 0 0-1 0 1 1 - - 1 1 0 1 1 1 1011 2 =1+2+8=11 10 101 2 =1+4=5 10 110111 2 =1+2+4+16+32=55 10 1 1 1 x 1 0 0 = 0 0 0 0 0 0-1 1 1 - - 1 1 1 0 0 Operazione di shifting In questo esempio, significativo, il numero iniziale 111 è stato traslato a sinistra di 2 posizioni, aggiungendo a destra due 0: 11100. Questo è logico visto che ho moltiplicato per 100. 25

Divisione / 0 1 0 0 0 1 -- 1 0 / 0 e 1/0 sono divisioni indefinite. Esempio: 1 1 0 1 1 1 : 1 0 1 = 1 0 1 1 1 0 1 1 1 1 1 0 1 1 0 1 26

TABELLA CONVERSIONE BIN POS/DEC BIN (4 bit) DEC 0 0 0 0 0 0 0 0 1 1 0 0 1 0 2 0 0 1 1 3 0 1 0 0 4 0 1 0 1 5 0 1 1 0 6 0 1 1 1 7 1 0 0 0 8 1 0 0 1 9 1 0 1 0 10 1 0 1 1 11 1 1 0 0 12 1 1 0 1 13 1 1 1 0 14 1 1 1 1 15 27

NUMERI INTERI CON SEGNO Utilizziamo la notazione modulo-segno. Abbiamo delle memorie RAM da 4 bit. Quanti numeri interi con segno possiamo memorizzare: 2 n = 2 4 = 16 numeri che vanno da (-2 n-1 = -8) a (+2 n-1-1 = +7) CMP2 - + BIN (4 bit) DEC 1 0 0 0-8 1 0 0 1-7 1 0 1 0-6 1 0 1 1-5 1 1 0 0-4 1 1 0 1-3 1 1 1 0-2 1 1 1 1-1 0 0 0 0 0 0 0 0 1 +1 0 0 1 0 +2 0 0 1 1 +3 0 1 0 0 +4 0 1 0 1 +5 0 1 1 0 +6 0 1 1 1 +7 - + CMP2 SEGNO Il bit più significativo indica il segno: 1 per negativi e 0 per positivi. I bit restanti sono utilizzati per la rappresentazione del modulo (numero senza segno). La tecnica del complemento a 2 è utilizzata per ricavare il numero positivo (o negativo) dal corrispondente numero negativo (o positivo). Per esempio conoscendo il codice binario di +5 posso ricavare il codice binario di -5. Notate che la cifra binaria più significativa da informazione sul segno del numero; se è 0 il numero è positivo, mentre se è 1 il numero è negativo. Esempio: troviamo il complemento a 2 del numero +4. 8 4 2 1 PESI 0 1 0 0 NUMERO 1 1 RIPORTI 1 0 1 1 CMP1 1 + 1 1 0 0 CMP2 Il risultato, infatti, coincide con il numero -4. 28

SOTTRAZIONE DI INTERI CON SEGNO Utilizziamo la tecnica del complemento a 2. Sulla base di 4 bit: 4 10-5 10 8 4 2 1 PESI DEC 0 1 0 0-4 - 0 1 0 1 = 5 = 0 1 0 0 + 4 + 1 0 1 1 + -5 = 1 1 1 1 = -1 Nell effettuare operazioni con numeri con segno occorre fare attenzione che ogni numero e anche il risultato possa essere rappresentato correttamente all interno della memoria. Esempio 1: sulla base di 4 bit, la somma fra i seguenti numeri positivi con segno non è possibile: 16 + 4 Con 4 bit: 2 n = 2 4 = 16 numeri che vanno da (-2 n-1 = -8) a (+2 n-1-1 = +7) Il 16, quindi, non può essere rappresentato sulla base di 4 bit e quindi l operazione di addizione non può essere effettuata. Esempio 2: -4 + (-5) Sebbene i due numeri rientrino nel range (-8, +7), il risultato, -9, no. Questa operazione non può essere effettuata utilizzando soltanto 4 bit. Quanti bit occorressero per rappresentare il -9: (-2 n-1 = -16) a (+2 n-1-1 = +15) n = 5 29

16 8 4 2 1 PESI DEC 0 0 1 0 0 4 CMP1 1 1 0 1 1 + 1 = CMP2 1 1 1 0 0-4 16 8 4 2 1 PESI DEC 1 1 1 0 0 + -4-0 0 1 0 1 = 5 = 1 1 1 0 0-4 + 1 1 0 1 1-5 = 1 1 0 1 1 1-9 16 8 4 2 1 PESI DEC 1 0 1 1 1-9 CMP1 0 1 0 0 0 + 1 = CMP2 0 1 0 0 1 +9 30

TABELLA CONVERSIONE BIN CON SEGNO/DEC BIN (5 bit) DEC 1 0 0 0 0-16 1 0 0 0 1-15 1 0 0 1 0-14 1 0 0 1 1-13 1 0 1 0 0-12 1 0 1 0 1-11 1 0 1 1 0-10 1 0 1 1 1-9 1 1 0 0 0-8 1 1 0 0 1-7 1 1 0 1 0-6 1 1 0 1 1-5 1 1 1 0 0-4 1 1 1 0 1-3 1 1 1 1 0-2 1 1 1 1 1-1 0 0 0 0 0 0 0 0 0 0 1 +1 0 0 0 1 0 +2 0 0 0 1 1 +3 0 0 1 0 0 +4 0 0 1 0 1 +5 0 0 1 1 0 +6 0 0 1 1 1 +7 0 1 0 0 0 +8 0 1 0 0 1 +9 0 1 0 1 0 +10 0 1 0 1 1 +11 0 1 1 0 0 +12 0 1 1 0 1 +13 0 1 1 1 0 +14 0 1 1 1 1 +15 31

CODIFICA DI NUMERI DECIMALI DEC BIN Dato un numero decimale, è necessario distinguere la parte intera da quella frazionaria: N = I,F Metodo 1 (formale) Parte intera Per convertire la parte intera I di un numero N si usa la stessa tecnica vista per i numeri interi, cioè, dividere ripetutamente per 2 e scrivere ordinatamente i valori dei resti ottenuti, a partire dalla posizione meno significativa. 32

Parte frazionale 33

34

Metodo 2 (pratico) Parte intera: vedi BIN DEC Parte frazionale: vedi BIN DEC BIN DEC Convertire in decimale il numero binario N = 101011.1011 2 2 5 =32 2 4 =16 2 3 =8 2 2 =4 2 1 =2 2 0 =1 2-1 = 1/2 2-2 =1/4 2-3 =1/8 2-4 =1/16 1 0 1 0 1 1 1 0 1 1 N = 1*2 5 + 0*2 4 + 1*2 3 + 0*2 2 + 1*2 1 + 1*2 0 + 1*2-1 + 0*2-2 + 1*2-3 + 1*2-4 = 43.6875 10 Avendo C cifre a disposizione si possono rappresentare 2 C numeri interi. Se, quindi, abbiamo numeri interi senza segno (numeri naturali) possiamo rappresentare i numeri da 0 a (2 c - 1), e se sono numeri interi con segno da -2 c-1 a (2 c-1-1). Esempio: se C = 4: interi naturali: da 0 a 2 4-1=15; interi con segno: da -2 3 =-8 a 2 3-1=7. Per rappresentare un certo numero N: C >= log 2 N Esempio: N=4 C>=log 2 4 C=2 N=8 C>=log 2 8 C=3 35

NUMERI FLOAT IN VIRGOLA FISSA Per la codifica BINARIA POSIZIONALE di numeri float (razionali o reali) in virgola fissa, si alloca un numero prefissato di bit per la parte intera, e uno per la parte frazionaria. Esempio, 2 Byte, uno per la parte intera e uno per quella frazionaria. Esempio: 39.345 10 = 00100111.01011000 2 36