codifica e rappresentazione delle...

68
Codifica e rappresentazione delle informazioni

Upload: duongtruc

Post on 16-Feb-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Codifica erappresentazione delle

informazioni

• Informazione è un qualunque insieme di segnali checondizionano l’evoluzione di un sistema.

• Nel mondo dell’informatica per informazioneintenderemo, in modo più restrittivo, tutto ciò che puòessere rappresentato tramite opportune sequenze disimboli in un alfabeto prefissato.

• La scelta della rappresentazione dei dati deveconsentire di gestire, elaborare e memorizzare leinformazioni in modo agile.

Codici e informazioni

Codici e informazioni• Un codice C è un insieme di parole composte da

simboli di un alfabeto (che chiameremoalfabeto supporto di C).

• La rappresentazione o codifica di un insieme diinformazioni I in un dato codice C è una funzionef:I C, ossia è una legge che associa ad ogniinformazione che si intende rappresentare unaopportuna parola del codice C.

• In modo analogo la decodifica è una funzione gavente per dominio C e per codominio I.

• Alfabeto S• C: insieme di parole sull’alfabeto• I: insieme di informazioni (parole di C)• Funzioni di codifica e decodifica tra

insiemi diversi di informazioni• Composizione di codifica e decodifica:

l’identità• Codifica (o decodifica) non ambigua:

iniettività

Codici e informazioni

Esempi• Codice in chiaro (codice in cui non vi è

l’intenzione di proteggere il contenuto delmessaggio)

S = 26 lettere dell’alfabetoI = insieme degli animali domesticiC=insieme delle parole del vocabolario checorrispondono ai vari animali domestici.

• Codice non in chiaro-Cifrario di CesareFunzione di codifica: f:i i+3(mod 26), i=0,1,…,25dove al numero 0 corrisponde la lettera a, al numero1 la lettera b..In base a tale cifrario, è facile verificare che“babbo” è codificato come “edeer”.

Alfabeto, sintassi, semantica• Alfabeto dei simboli• Regole di composizione (sintassi) che

definiscono la sequenza di configurazioniammissibili (vanno a creare I)

• Codice (semantica): insieme di regoleche ad ogni configurazione ammissibileassocia un’entità di informazione

• Lo stesso alfabeto può essere usato concodici diversi.

Rapresentazione caratteri - Codice ASCIII codici carattere vengono usati per rappresentare in binario isimboli non numerici usatinella scrittura (ALFABETO , punteggiatura, parentesi ...) ed anchecomandi standardprovenienti componenti di I/O (tastiera, stampante ,...)

Il più diffuso e’ il codice ASCII (American Standard Code forInformation Interchange) composto da parole di lunghezza fissa a 7bit (128 combinazioni)

Una estensione successiva ad 8 bit del codice ASCII fu sviluppatadall’IBM e prendeil nome di EBCDIC (Extended Binary-Coded Decimal InterchangeCode)

Ulteriori estensioni hanno permesso di incorporare nellarappresentazione i simboli utilizzati negli alfabeti di diverse lingue(cinese, russo..)

Codice ASCII - codici carattere

Numeri naturali• Consideriamo un particolare tipo di informazione,

quella che specifica il valore di un numero naturale:0,1,2,3,4…..

• Attenzione: analogamente agli altri tipi diinformazione va fatta una distinzione tra il concetto osignificato di numero (numero) e la suarappresentazione o codifica in un qualche codice(numerale).

• Numero: entità astratta• Numerale: stringa di caratteri che

rappresenta un numero in un dato sistemadi numerazione

• Lo stesso numero è rappresentato danumerali diversi in diversi sistemi.

• Il numero di caratteri del numeraledetermina l’intervallo dei numerirappresentabili.

• Un numerale rappresenta un numero solo sesi specifica un sistema di numerazione

• Lo stesso numerale rappresenta diversinumeri in diversi sistemi.

Numeri naturali

Numeri e numerali

Numero

Numerale Numerale

Rappresentazione

Interpretazione

Trasformazione fraRappresentazioniEsempio numerali:

“dodici”, 12, XII,

Entità astratta

Analogia: gatto e cat denotano la stessa “entità”in due lingue differenti

Rappresentazioni dei numeri• Codifiche posizionali: ogni cifra ha un peso

• le più usate: decimale, binaria,esadecimale, ottale

• non posizionale:

• romana, italiano…

• Un calcolatore elettronico dispone di uno

spazio finito per memorizzare le cifre che

esprimono un valore numerico

Perdite di proprietàEsempio: p=3 cifre decimali, valori rappresentabili

S={0,..,999}

• di chiusura dovuta ad overflow (risultato maggiore delvalore massimo rappresentabile)– 600 + 600 = 1200 (1200 S)– 50 x 50 = 2500 ( S)

• di chiusura dovuta ad underflow (risultato minore delvalore minimo rappresentabile)– 3-5 = -2 ( S)

• Perdita proprietà associativa– a+(b-c) (a+b)-c

700 + (400-300) (700+400)-300; 700+400 Overflow!• Perdita proprietà distributiva

– a x (b-c) a x b – a x c

Sistemi Posizionali Pesati• Definiti da una coppia (A,B)

dove B >1 è un intero, detto base del sistema,ed A un insieme di simboli distinti, le cifre, con |A|=B,

Esempi di sistemi:

– decimale, B =10, A={0,1,2,3,4,5,6,7,8,9}– binario, B =2, A={0,1}– ottale, B =8, A={0,1,2,3,4,5,6,7}– esadecimale, B =16, A ={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

• Ogni cifra rappresenta un numero distinto compreso fra 0 eB -1

Es: B=16:1 “uno”, 2 ”due”,.., A ”dieci”, .., F ”quindici”,

• Un valore numerico è rappresento da una sequenzadi cifre (rappresentazione o allineamento)appartenenti ad A

dk-1..d2d1d0.d-1d-2…d-p

• L’indice associato alla cifra denota la posizionedella cifra che esprime il peso della cifra– Valore di di= V(di) = di x Bi

PARTE-INTERA . PARTE-FRAZIONARIA

Sistemi Posizionali Pesati

Esempio: sistema decimaleA={0,1,2,3,4,5,6,7,8,9}

Esempio: 743.234– d2=7, d1=4, d0=3, d-1=2, d-2=3, d-3=4

– V(734) = 7 x 102 + 4 x 10 + 3

– V(0.234) = 2 x 10-1 + 3 x 10-2 + 4 x 10-3

103 102 101 100 10-1 10-2 10-3

1000 100 10 1 0.1 0.01 0.001

Notazione• Per evidenziare la base B del sistema di

numerazione si usa la seguente notazione(X)B (X in base B)

• Negli esempi seguenti, se omessa vale 10• La cifra più a sinistra è detta cifra più

significativa, quella a destra cifra menosignificativa– Se B=2 si usano gli acronimi MSB (Most

Significant Bit) ed LSB (Least Significant Bit)

• Il principio di funzionamento di un computer si basasulla logica binaria.

• Tale logica è basata sull’esistenza di 2 soli simboli,valori o stati (rispettivamente 0 o 1, “Vero” o “Falso”,“aperto” o “chiuso”)

• Per comprenderne l'idea di base, possiamo pensare aun interruttore, che può essere aperto o chiuso, o aduna scheda che può essere forata o meno in un punto, oad un suono che può essere presente o no, o ancora aduna riflessione ottica che può verificarsi o meno.

Codifica Binaria

Codici binari per rappresentare decimaliSi usano per rappresentare le dieci cifre decimali in binario

dato che 23 < 10 < 24 occorrono almeno 4 bits

Decimale Binario BCD Eccesso-3 Biquinary 1 di 10

0 0 0000 0011 0100001 00000000011 1 0001 0100 0100010 00000000102 01 0010 0101 0100100 00000001003 11 0011 0110 0101000 00000010004 100 0100 0111 0110000 00000100005 101 0101 1000 1000001 00001000006 110 0110 1001 1000010 00010000007 111 0111 1010 1000100 00100000008 1000 1000 1011 1001000 01000000009 1001 1001 1100 1010000 1000000000

145 decimale

BCD0001 0100 0101

Biquinary0100010 0110000 1000001

Binario10010001

Bit e ByteUna variabile che assume solo due stati (0 e 1) si chiamabit ("binary digit", cifra binaria) ed è l'unità minima diinformazione e la base dell'algebra binaria.

Un computer "ragiona" unicamente interpretando gruppidi bit, cioè comandi rappresentati da sequenze di "uno" edi "zero" (per esempio, 00101100).

Il bit è l’unità di misura dell’informazione binaria

Convenzionalmente, 8 bit costituiscono 1 byte e altrimultipli molto usati sono:

Grandezze elettriche

• Analogiche– Il più possibile analoghe a ciò che

rappresentano (all’originale)• Ex: forma corrispondente alla voce

tempo

Pres

sion

e ar

ia

Tens

ione

ele

ttri

ca

tempo

Grandezze elettriche

Valori d

igitalizza

ti d

ella

Tens

ione

elett

rica

tempo

• Rappresentazioni digitali• Le grandezze analogichevengono approssimate con valoridiscreti (di numero finito)

Grandezze elettriche

• Binarie– Grandezze digitali che possono assumere due

soli valori, comunemente indicati con 0 ed 1• La grandezza fisica può essere una tensione (alta,

bassa), una corrente (presente, non presente), suono(alto, basso), luce (presente, non presente), etc..

tempo

V2

V1

Andamento ideale0-> V1, 1-> V2oppure0-> V2, 1-> V1 …

Grandezze elettriche

• Binarie– In realtà…

• i valori 0 ed 1 sono rappresentati mediantevalori di un intervallo

• Il cambiamento da 0->1, 1->0 non è istantaneo

tempo

3.32.8

0.50.0

Andamento realerumore

Technology State 0 State 1

Relay logic Circuit Open Circuit ClosedCMOS logic 0.0-1.0 volts 2.0-3.0 voltsTransistor transistor logic (TTL) 0.0-0.8 volts 2.0-5.0 voltsFiber Optics Light off Light onDynamic RAM Discharged capacitorCharged capacitorProgrammable ROM Fuse blown Fuse intactMagnetic disk No flux reversal Flux reversalCompact disc No pit Pit

Mapping fra grandezze fisiche e logica binaria

Sistema Binario (base 2)Utilizzato dai circuiti elettronici dei calcolatori,

2 cifre (bit), d A = {0,1}

V(N) = dk-1 x 2k-1 + dk-2 x 2k-2 +.....+ d1 x 21 + d0 x 20 +d-1 x 2-1 +......+ d-p x 2-p

(1010.101)2 = 1 x 23 + 1 x 21 + 1 x 2-1 + 1 x 2-3 =(10.625)10

23 22 21 20 2-1 2-2 2-3

8 4 2 1 0.5 0.25 0.125

Potenze di 2• 22=4• 23=8• 24=16• 25=32• 26=64• 27=128• 28=256• 29=512• 210=1024 (K) K=Kilo• 220 = 1024K (M) M=Mega• 230 = 1024M (G) G=Giga• 240 = 1024G (T) =Tera• 250 = 1024T (P) =Peta

• 216 =65536 = 26 210 = 64 K• 232= 22 230 = 4 G

osservazione : 1 Kb > 103bit,tuttavia le bande dei bus-linkdi comunicazione vengonomisurate in bits/sec in basedecimale:p.e. 1 Kb/s = 1000 b/s

ciò proviene dalla tradizionedel mondo della trasmissioneanalogica

Base ottale ed esadecimale

Base ottale (8 o O)

A={0,1,2,3,4,5,6,7}

Base esadecimale (16 o H)

A={0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}

Conversione di base• Problema: dato un valore rappresentato

dall’allineamento N in base B1 trovare larappresentazione N’ in base B2

(N)B1 (N’)B2

• Nel seguito, se chiaro dal contesto, N denota sia ilvalore che l’allineamento delle cifre nella base

• Bisogna convertire separatamente le parti intera (NI)e frazionaria (NF)

– (N)B1=(NI.NF)B1

– (NI)B1 (N’I)B2

– (NF)B1 (N’F)B2

Conversione• Casi notevoli

• B1 10 e B2=10• B1=10 , B2 10

• Poiché si ha familiarità con la base B=10 quando ledue basi sono diverse da 10 conviene (più intuitivo)fare due trasformazioni successive:

– da B1 a base 10

– da base 10 a B2

Conversione da B (2, 8, 5) a B=10

(di fatto già visto)

(1010.101)2 = 1 x 23 + 1 x 21 + 1 x 2-1 + 1 x 2-3 =(10.625)10

(721)8 7 x 82 + 2 x 81 + 1 x 80 = 7x64 + 16 + 1 =448 +17=(465)10

(134) 5 1 x 52 + 3 x 51 + 4 x 50 = 25 + 15 + 4 ==(44)10

Conversione da base 10 a B (NI>0, intero)

Sia (NI)10 il valore in decimale dell’intero che vogliamo convertire in altrabase, tale valore nella nuova base è pari a :

(NI)10 = dk-1Bk-1 + .. + d1B + d0

Obiettivo: dobbiamo trovare i valori di nella nuova base B

(N’I)B = dk-1Bk-1 + .. + d1B + d0 = B(dk-1Bk-2 + .. + d1) + d0

quindi dividendo per B abbiamo che

d0= è il resto e dk-1Bk-2 + .. + d1 = è il quoziente

cioèd0=(NI)10 mod B, e dk-1Bk-2 + .. + d1 =(NI)10 / B

Conversione da base 10 a B (NI>0, intero)... cont

• Le altre cifre si identificano in modo analogo

dk-1Bk-2 + .. + d1

• notare che:

è un intero, pertanto il resto della sua divisione conB ci fornisce d1, cioèd1 = ((NI)10 / B )mod B

N intero in base 10 daconvertire,B base di arrivo

i 0;while N<>0 do

1. di N modB

2. N N/B3. i i+1

endwhile

Esempio: (25)10 = (??)2

(25)10 = (11001)2

Conversione da base 10 a B (N intero)

N N / 2 N mod2

Cifra

25 12 1 d0=1d1=012 6 0d2=06 3 0d3=13 1 1d4=11 0 1

N N / 16 N mod16

Cifra

30 1 14 d0=E

1 0 1 d1=1

(30)10 = (??)16

(30)10 = (1E)16

Esempio

N N/2 N mod2

Cifra

30 15 0 d0=0

15 7 1 d1=1

7 3 1 d2=1

3 1 1 d3=1

1 0 1 d4=1

(30)10 = (11110)2

Conversione da base 10 a B (Parte frazionaria)

Sia (NF)10 il valore in decimale della parte frazionaria che vogliamoconvertire in altra base, tale valore è pari a :

(NF)10 =d-1B-1 + d-2B-2+. + d-mB-m+ .. + …Moltiplicando per B

(NF)10 B = d-1B0+ d-2B-1 .. + d-mB-m+1 + … + … =

Quindi: d-1 = parte intera di NFB (= trunc(NFB) )

N’ = NFB - d-1 = (d-2B-1 .. + d-mB-m+1+ ..+ ..)

• Le altre cifre si identificano in modo analogo:d-2 = parte intera di N’B

• Finché precisione voluta oppure N=0

N<1 valore frazionarioda convertire,B base di arrivo,m cifre (precisione)

i 1;while N<>0 and i m do

1. d-i trunc (NB)2. N NB - d-i3. I i+1

endwhile

Conversione da base 10 a B (0<N<1)

(0.8125)10 = (0.1101)2

d-3=000.50.25

d-2=111.250.625

d-4=111.00. 5

d-1=111.6250.8125

CifraTrunc(2N)2NN

Esempio: (0.8125)10 = (??)2

0

Esempio: (12.25)10 (..)2

• 12/2 = 6 resto 0 d0=0• 6/2 = 3 resto 0 d1=0• 3/2 = 1 resto 1 d2=1• 1/2 = 0 resto 1 d3=1

• 0.25 x 2 = 0.50, parte intera 0 d-1=0• 0.50 x 2 = 1.0, parte intera 1 d-2=1

(12.25)10 (1100.01)2

N 2N Trunc(2N) Cifra

0.2 0.4 0 d-1=0

0.4 0.8 0 d-2 =0

0.8 1.6 1 d-3 =1

0.6 1.2 1 d-4 =1

0.2

Esempio: (0. 2)10 = (??)2

(0.2)10 = (0.0011)2

Esempio numeri periodici

Se un numero è periodico in base 10 alloralo è anche in base 2. L’affermazione opposta non è vera

Altre basi notevoli Basi 8 e 16

• Esempio:– (721)8 7 x 82 + 2 x 81 + 1 x 80 = 7x64 + 16 + 1 = 448 +17=(465)10

– (0.1)8 1/8 = (0.125)10

• Esempio:– (721)16 7x162+2x161 +1x160 =7x 256 + 32 + 1= 1792+33= (1825)10

– (0.1)16 1/16 = (0.0625)10

• Nota: nel caso rappresentazioni esadecimali è prassianteporre 0x, oppure il suffisso H– Ex: 0x721, 721H

Relazione fra le basi 2/8/16

(E54)16

(1110 0101 0100)2

(621)8

(110 010 001)2

(E54)16 (1110 0101 0100)2 (111 001 010 100)2 (7124)8

Da base 16(2) a 2(16)

Da base 8(2) a 2(8)

Da base 16(8) a 8(16)

Rappresentazione interi negativi

Esistono diversi metodi

• Modulo e segno• Complemento a uno (obsoleto)• Complemento a due• Eccesso 2m-1

Modulo e segno• E’ il più immediato da comprendere

– si dedica un bit al segno ed i rimanenti al modulo– di norma 1 denota il segno “-”

• Esempio (quattro bit di cui tre per il numero e uno per il segno)

– -7 |7| = (111)2 -7 = (1111)2– 7 (0111)2

• Con k bit l’intervallo di dei valori rappresentabili è

S=[-2k-1-1,..,2k-1-1]

• Doppia rappresentazione di 0

Modulo e segnonormale rappresentazione grafica che conosciamo

negativi positivi

- 5 0 +7......_________________/_________________.......

Rappresentazione con segno e modulo (caso con numero di bit limitato: 3 + 1 nell’esempiosottostante)

positivi negativinum dec 0 ... 7 0 -1 .... -7

bit segno 0 ... 0 1 1 ... 10 ... 1 0 0 ... 10 ... 1 0 0 ... 10 ... 1 0 1 ... 1/_______________/___________________

+ -

Il bit più pesante è il segno (0 +, 1 -)

Pesi: 3 2 1 0Cifre: 0 1 0 1

Corrisponde al +5

Il -5 lo ottengo “complementando” le cifre

Pesi: 3 2 1 0Cifre: 1 0 1 0

Complemento a 1

• Ho due rappresentazioni dello 0

• Ho dei problemi se:

– Sommo due numeri di segno opposto e il risultato èpositivo

– Sommo due numeri negativi e il risultato è positivo– Il risultato dell’operazione non è rappresentabile

Complemento a 1

Complemento a 2 (complemento alla base – binaria nel ns. caso)

Fissato un numero k>1 di cifre binarie, il complemento a2 su k bit di un intero N, N S={-2K-1 ,..2K-1 –1} , è

N per 0 N 2K-1 –1 (num. positivi)

C(k,N)=2k-|N| per -2K-1 N –1

Una definizione alternativa è C(k,N) = (N + 2k) mod 2k

La linea dei numeri in complemento a 2 ( N=5)

°2 N-1 non-negativi

°2 N-1 negativi°Un solo zero°Quanti sono inumeri positivi?

00000 0000100010

1111111110

10000 0111110001

0 1 2-1

-2

-15 -16 15

.

.

.

.

.

.

-311101

-411100

Rappresentazione in complemento a due (k = 5)

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1

MSB

LSB

ProprietàPerché usare la rappresentazione in complemento?

Semplifica le operazioni aritmeticheLa differenza X – Y può essere calcolata mediante la

somma dei complementi:

C(x-y)=C(x)+C(-y)

• In generale la somma algebrica diventa sommaaritmetica

• Semplificazione dei circuiti elettronici cheeseguono le operazioni (solo addizioni)

Calcolo del complemento a 2

Primo metodo:- rappresentare il valore assoluto di N in base binaria- invertire tutti i bit ed aggiungere 1

Esempio: rappresentare N=–25 in complemento su k=8 bit.|-25| = 25 = 16+8+1

00011001 (25)1110 0110 + (Inverto i bit)

1 = (sommo 1)1110 0111 (231)

Secondo metodo:– Rappresentare il valore assoluto di N in base 2– Partendo da destra, lasciare invariati tutti i bit fino al

primo bit 1, poi invertire gli altri

Valore espresso in base 2

• Il valore della stringa di bit S=(bk-1..b2b1b0),supposto che essa esprima un numero incomplemento a 2 su k bit, è

k-2V(S)=-bk-12k-1 + bi2i

i=0

– Pertanto• bK-1 = 0 numero positivo• bK-1 = 1 numero negativo

– Attenzione, MSB non è un bit di segno!• Per ottenere il corrispondente valore di segno opposto

non e’ sufficiente invertire solo MSB

Altri esempi

= 4+1 = 5=-8+4+1= -3= 1 più piccolo positivo=4+2+1 = 7 più grande positivo

=-8+4+2+1=-1 più piccolo negativo=-8 più grande negativo

Esempio: k = 4 bit-23 22 21 20 Peso in decimale

-8 4 2 1

0 1 0 11 1 0 10 0 0 10 1 1 1

1 1 1 11 0 0 0

• k=8 bit, pesi=<-128,64,32,16,8,4,2,1>

• 11110000, rappresenta –128+64+32+16 = -16

• 10000000, rappresenta –128

• 11111111, rappresenta -128+64+32+16+8+4+2+1= -1

• 00000000, rappresenta 0

Altri esempi

Rappresentazione dei numeri decimaliin complemento alla base

N 0 1 2 ..............48 49 –50 –49 –48 -1

C(N) 0 1 2..... ... ... 48 49 50 51 52 ........... 99

2 digit a disposizione, quindi delle 100 configurazioni metàrappresentano numeri positivi (incluso zero) e metà negativi

Se N positivo C(N) = N

Se N negativo C(N)= 102 - /N/

Differenza di numeri in complementoalla base (caso decimale)

La differenza X – Y può essere calcolata mediante la somma deicomplementi:

C(x-y)=C(x)+C(-y)

Esempio: X-Y; X=21 e Y=23, con k=2 cifre decimali adisposizione:

• C(21)=21, C(-23)=100-23=77• C(21) + C(-23) = 21+77 = 98 = C(-2)

Ciò vale in generale :

• Se Y>X, ossia (X-Y<0), allora: C(X-Y)=(def) Bk - |X-Y| = Bk -(-(X-Y)) = Bk -Y+X, ma per definizione ciò è uguale a C(X)+C(-Y)

• Il caso Y X verrà trattato fra breve

• Nota: In questo caso non può mai verificarsi overflow

Differenza di numeri in complementoEseguiamo ora la differenza fra X=23, Y=21, con k=2 cifre

decimali

• C(23)=23, C(-21)=100-21=79

• 23+79 = 102 = 2 + 100 = C(2) + 100,• ma essendoci solo due cifre il numero diventa 02

Ciò vale in generale:• Se X Y, ossia (X-Y 0), allora: C(X-Y)=(def) X-Y

• d’altra parte C(X)+C(-Y) =X+Bk –Y Bk

• Pertanto C(X-Y)=C(X)+C(-Y).. a meno di un fattore Bk

Esempio di calcolo del complemento allabase decimale

Fissiamo Base B=10, numero di digit k=2 102= 100

• X=23, Y=21• -X-Y = ?

Algoritmo1. Calcolo complemento di X, X’=C(-23)=100-23=77;2. Calcolo complemento di Y, Y’=C(-21)=100-21=793. Eseguo la somma, X’+Y’=1564. Sottraggo 100 se la somma è > 100: 156-100 = 565. Il risultato (56) è il complemento di -X-Y,

56 = C(-44)

Rappresentazione eccesso 2m-1

• Il valore N viene rappresentato da N+2m-1

• Si tratta di una traslazione dell’intervallo dirappresentabilità verso destra.

• Range di valori [-2m-1...2m-1–1]

Esempio di codifica eccesso 4= 22 dei valori [- 4, 3]

-4 -3 -2 -1 0 1 2 3 (valore rappresentato in decimale)

0 1 2 3 4 5 6 7 (eccesso 4 = 22)

Rappresentazione eccesso 2m-1 (cont.)• Per passare dalla rappresentazione eccesso 2m-1 al complemento a 2

su m bit si deve invertire solo il bit MSB

Esempio precedente-4 -3 -2 -1 0 1 2 3

rapp. eccesso 4 (rappresentato in binario)

0 0 0 0 1 1 1 1 (MSB)0 0 1 1 0 0 1 10 1 0 1 0 1 0 1

rapp. compl. a 2

1 1 1 1 0 0 0 0 (MSB)0 0 1 1 0 0 1 10 1 0 1 0 1 0 1

Somma binaria• BASE B=2• 0+0=0• 0+1=1• 1+0=1• 1+1=10 =(2)10

• 1+1+1=11 =(3)10 1 1 1 0 0 0 + (56)100 1 1 1 0 1 = (29)10

----------------------(85)10

Riporto (carry)

1

0

01

00

0

1

1

1

0

1

1

64+16+4+ 1 = 85

La somma di due numeri a k bit e’ rappresentabile al piu’ con k+1 bitSe abbiamo a disposizione k bit ed il risultato richiede k+1 bit si ha overflow

Regole per la somma

Somma di due bit A e B

Cout Cin +A +B =

------------Si

Cin A B Cout Si

0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1

In generale:Cin e’ il il riporto (carry) generato dalla somma dei bit di peso i-1Cout è il riporto generato dalla somma dei 2 bit A,B di peso i

la coppia di valori (Cout,Si) indicail numero di “uno”, espresso in base 2

attenzione a due questeconfigurazioni ….sono le uniche in cuiCin<>Cout

Somma algebrica in complemento

• Esprimere gli operandi in complemento alla base– La rappresentazione in complemento differisce solo per i

valori negativi• Eseguire la somma• Trascurare l’eventuale riporto• Se non si è verificato overflow, allora la somma

rappresenta il risultato espresso in complemento• Si verifica overflow quando gli operandi hanno lo

stesso segno ed il risultato ha segno opposto

Overflow, esempio

• Eseguire su k=4 bit la differenza: –3-6

|-3| 2+1 0011 1101

|-6| 4+2 0110 1010

1101 + (-3)1010 = (-6)

1000 (riporti)

(1)0111 (7!)

Rilevazione overflowSi verifica OVERFLOW se:

1) i due operandi hanno lo stesso segno2) Il risultato ha il segno diverso dagli operandi

ma…….c’è anche un modo alternativo (usato nei circuiti addizionatori)

1000-3 + 1101-6 = 1010

------- => ------------9 10111 => 7

0100+5 + 0101+6 = 0110

------- => -----------+11 01011 => -5

……il verificarsi dell’overflow implica la disuguaglianza del riporto iningresso e quello in uscita dalla posizione MSB (Cin<>Cout)

L’overflow si può rilevare testando la condizione “Cin<>Cout” di MSB

Estensione del segno• Problema:

– Sia dato un intero N, rappresentato in complemento mediante kbit

– Rappresentare N usando k+q bit (q>0)

• Soluzione:– Fare q copie di MSB

• Dimostrazione (banale per N positivo)– Sia N<0 (N=1bb…b , dove b è una cifra binaria)– Per induzione: Sia Nq la stringa con estensione di q bit

• q=1: Poiché –2K–1=–2K +2K–1, allora V(N)=V(N1).• q>1: estendere di un bit la stringa ottenuta da N con estensione di q-

1 bit V(Nq)=V(Nq-1)• Esempio

– -2 = (110)2 con 3 bit diventa (111110)2 su 6 bit

Prodotto e divisione per 2k

• Il prodotto di N per 2k si ottiene spostando di k posizioni lecifre a sinistra ed inserendo k bit pari a zero

• La divisione di N per 2k si ottiene spostando di k posizioni lecifre a destra ed inserendo k bit pari al valore di MSB (shiftaritmetico)

• Esempio : -128/8 = -16 (8=23)

1000 0000 (3 posizioni a destra)

1111 0000 = (-16)10

• Esercizio: verificare tale regola

• Se N è un numero senza segno, allora il prodotto (divisione)per 2k si ottiene spostando (shift) le cifre a sinistra (destra)di k posizioni ed introducendo 0 nelle posizioni lasciate libere

Esempio: 15 x 4= 60 (4=22,shift 2 posizioni)0000 11110011 1100

Esempio: 128 / 2= 64 (2=21, shift 1 posizione)1000 00000100 0000

• Attenzione: nel caso di rappresentazioni con segno questaregola non vale..

Prodotto e divisione per 2k