codifica e rappresentazione delle...
TRANSCRIPT
• 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..)
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