Sunteți pe pagina 1din 106

Probleme de funcţionare

• Pentru a obţine un flip-flop D


» din latch-uri D cu ceas.
» ignorare; întârziere (front ascendent).
Front ascendent Ciclu Front descendent
activ

Cl
D
Q
Qdorit_MS
Flip-flop master-slave D
Reduce probabilitatea activării la variaţii bruşte de input.
Face posibilă proiectarea unor circuite secvenţiale complexe (ex.: regiştrii cu
deplasare).

D DM QM DS QS Q
CL
CLM CLS
Q
Flip-flop JK master-slave
Utilizarea controlului prin ceas
• Depinde de elementele de construcţie
folosite.
• Larg folosite flip-flop-urile active pe front
– crescător sau descrescător
– De exemplu, la componentele logice
programabile (programmable logic devices)
• Numeroase circuite integrate uzuale folosesc
latch-uri
• active pe nivel
• Asincronie (I/O, delay)
Latch-uri şi flip-flop-uri
• Circuite D
– Latch: 4 tranzistoare
– Flip-flop: utilizat în elemente programabile
– Alegerea uzuală pentru regiştri

• Intrări de tip “preset” şi “clear” sunt utile


– pornirea / re-setarea sistem
• Circuite sincrone
– Intrările, starea şi ieşirile se schimbă şi sunt luate în
considerare la un semnal de referinţă - ceas
– Exemple: master/slave, circuite active pe front
• Circuite asincrone
– Intrările, starea şi ieşirile se schimbă şi sunt luate în
considerare independent de vreun semnal de
referinţă
– Exemplu: latch R-S
• Intrări asincrone în circuite sincrone
– Intrările se pot schimba la orice moment
Regiştri
• Bitul este “atomul” de informaţie la nivel fizic; la
nivel logic, “atomul este constituit de un grup de
biţi
• 8 (ex.: codul ASCII) sau un multiplu de 8 (virgulă fixă).
• Registru: grup de flip-flop-uri cu semnale de
control corelate şi funcţionând ca un tot
– Semnalele de ceas, RS (sau echivalente) sunt
comune flip-flop-urilor din registru clock
• Exemple
– Regiştri cu deplasare
– Contoare
Registrul cu deplasare
• Memorează ultimele k valori input, în
ordine
» Specificaţii: 11010000;1000;0100;1010;1101
» M-S.
» K=4:
OUT1 OUT2 OUT3 OUT4

IN D Q D Q D Q D Q

CLK
Registrul universal cu deplasare
• Intrările pot fi seriale sau paralele (simultane).
• Ieşiri seriale sau paralele
• Poate efectua deplasarea spre stânga sau spre dreapta
• Valori noi sunt introduse de la stânga la dreapta
• Intrări/ieşiri suplimentare pentru deplasare
• biţi “pierduţi” / ”recuperaţi”
clear pune la 0 conţinutul registrului şi ieşirile
ieşire s1 şi s0 controlează funcţia de deplasare

s0 s1 funcţie
intrare stânga Ieşire dreapta 0 0 păstrează starea
ieşire stânga Intrare dreapta
clear 0 1 deplasare dreapta
s0 ceas (shift)
s1
1 0 deplasare stânga
1 1 încărcare noua intrare
intrare
Contoare (circuite de numărare)
• Generează o anumită secvenţă de combinaţii la ieşire,
reluată de la început după ce se termină.
– În figură, 1000, 0100, 0010, 0001…
– Starea iniţială trebuie să fie una dintre combinaţii

OUT1 OUT2 OUT3 OUT4

IN D Q D Q D Q D Q
CLK

• Contorul Mobius (Johnson)


• 1000, 1100, 1110, 1111, 0111, 0011, 0001, 0000…
OUT1 OUT2 OUT3 OUT4

IN D Q D Q D Q D Q
CLK
Contor binar
• Ieşirea constă din scrierea în baza 2 a numerelor de la 0
la 15, în ordine, reluate apoi de la 0: 0000, 0001, 0010,
0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011,
1100, 1101, 1110, 1111, 0000, 0001, …..
» 1: 0101010101010101…;
» 2: 001100110011…;
» 3: 0000111100001111…;
» 4: 00000000111111110000000011111111…
• Alte diagrame posibile?

OUT1 OUT2 OUT3 OUT4

D Q D Q D Q D Q
CLK

"1"
Capitolul al-IV-lea

Reprezentări interne
&IV.1.

Introducere
• Reprezentările interne elementare
constituie un element al arhitecturii
oricărui calculator
• Resursă accesibilă direct programatorilor
• Structurile de date mai complicate se
definesc pornind de la reprezentările
interne elementare.
Reprezentări elementare

• Date numerice
• Anumite submulţimi finite ale mulţimilor numerelor întregi,
respectiv raţionale
• Date “alfa-numerice” / logice
• Caractere ; valori de tip boolean
• Instrucţiuni
• În limbaj maşină
• Singurele reprezentări interne elementare ne-standardizate
» Şi, evident, neportabile.
Importanţa studiuluui
reprezentărilor
• Eficienţa şi siguranţa (fiabilitatea)
reprezentărilor interne
• Numerice:
r(n1) op r(n2) ?=? r(n1 op n2)
• Erori inevitabile şi efectul lor
• Mulţimi de cardinalităţi diferite
» R[a,b] şi Qm[a,b])
• Aproximări, depăşiri
• Tratarea cazurilor de excepţie
&IV.2.

Coduri detectoare şi
coduri corectoare de erori
Detectarea de erori
• Fiabilitatea transmisiei şi prelucrării
reprezentărilor de date.

dată dată

Codificare Decodificare

Şir de biţi Şir de biţi

Transmisie
(posibil cu ”zgomot”)
Moduri de detectare / corectare
• Paritate: bit suplimentar
– detecţie
– paritate (im)pară: număr (im)par de 1
• Cod Hamming
– corecţie
– 4 biţi de informaţie, 3 biţi de paritate
– dectarea /corecţia mai multor erori simultan
Exemplu: ”paritate impară”
• Emiţător:
– Are de trimis valoarea (110)2
– generează bitul de ”paritate impară” P=1
– trimite (1101)2
• Receptor:
– primeşte (1101)2
– verifică imparitatea numărului de 1 din şir
– Dacă nu detectează erori, elimină bitul de paritate,
pentru a obţine valoarea transmisă: (110)2
&IV.3.

Codificări alfanumerice
Codificări alfanumerice
• Reprezentări binare ale datelor
alfanumerice
• Alfabetice, numerice, simbolurile pentru
operatori, separatori etc.

Dată de Sistem de Dată


codificat codificare codificată
(şir de biţi)
Coduri alfanumerice
• ASCII
• American Standards Committee for Information
Interchange code
• Un caracter se reprezintă pe 7 biţi plus un bit de paritate
• EBCDIC (8 biţi)
• Extended Binary Coded Decimal Interchange Code
» Extinde codul binar pentru cifre zecimale
• ISO 8859-1 (Latin-1)
• 8 biţi
• Include şi, spre exemplu, litere cu accent
• Ê = CA(16)
• Supraîncărcare a şirurilor de biţi:
– Unicode
– caractere non-latine
– UCS
– Universal Character Set
Codul ASCII - exemple
• 1000001  A
• 1000010  B
• …
• 1011010  Z
• 1100001  a
• 1100010  b
• …
• 1111010  z
• Ordine lexicografică  comparatorul binar
• pentru 7 biţi – bitul de paritate se ignoră.
&IV.4.
Reprezentarea
internă a numerelor
&IV.4.1.

Scrierea
poziţională
Scrierea poziţională
• Este tot o reprezentare!
• 72018 nu este un număr, ci reprezentarea unui
număr
• Inventată de arabi / indieni
• Scrierea romană nu permite algoritmi eficienţi de
calcul
• Factor implicit ataşat fiecărei poziţii din
reprezentare
• Esenţială în arhitectura calculatoarelor
• Exemplu: sumatorul serial din sumatoare complete
Baze de numeraţie
• Orice număr natural d>1.
• Cu un singur simbol nu se pot folosi factori
impliciţi, ci juxtapunere + numărare
• Mulţimea cifrelor în baza d: {0,1,…,d-1}
• Calculatorul lucrează în baza d=2.
• Estimări analitice şi probabiliste: bazele în care se
pot face cel mai rapid calcule sunt 2 şi 3.
• Tehnic: 2 cifre cel mai uşor de realizat
• Teoretic: baza 2 se poate “scufunda” în logica
booleenă
» ca simboli şi ca operaţii
Limite
• Dacă s-ar reprezenta numerele în baza 2
fără semn (pozitive), atunci:
• Numărul maxim reprezentabil pe un octet
ar fi 255 = 28-1;
• Numărul maxim reprezentabil pe doi octeţi
ar fi 65535 = 216-1;
• Numărul maxim reprezentabil pe patru
octeţi ar fi 4294967295 = 232-1.
Scrierea poziţională
• Baza d, dN*-{1}:
pentru ai {0,1,…,d-1}, i= - m,…,n-1
± (an-1an-2….a1a0,a-1…..a-m)(d)=
± i=-m n-1 (ai*di) (10)
• ai = valoarea celei de-a i+1a cifre de la stânga virgulei
» i=0..n-1
• a-j = valoarea celei de-a ja cifre de la dreapta virgulei (j>0)
» j=1..m
• di este factorul implicit pentru poziţia i
– Se ridică la puterea i
• d+1 pentru partea întreagă
• d-1 pentru partea fracţionară
Baza d  baza 10

• Formula de mai sus este şi formula trecerii


din baza d în baza 10.
• Partea întreagă de n-1 cifre
• Partea fracţionară de m cifre
Un exemplu

• FA2,B(16)=
15×162 + 10×161 + 2×160+11×16-1
= 3840 + 60 + 2 + 11 / 16 =
4002,6875(10)
Baza 10  baza d
• 813,65(10) = 1100101101,10(1001)(2)
» 813 / 2 = 406 + 1 / 2 1 (LSBi)
» 406 / 2 = 203 + 0 / 2 0
» 203 / 2 = 101 + 1 / 2 1
» 101 / 2 = 50 + 1 / 2 1
» 50 / 2 = 25 + 0 / 2 0
» 25 / 2 = 12 + 1 / 2 1
» 12 / 2 = 6 + 0 / 2 0
» 6/2= 3+0/2 0
» 3/2= 1+1/2 1
» 1/2= 0+1/2 1 (MSBi)
» 0,65 / 2-1 = 1 + 0,3 1 (MSBf)
» 0,3 / 2-1 = 0 + 0,6 0
» 0,6 / 2-1 = 1 + 0,2 1
» 0,2 / 2-1 = 0 + 0,4 0
» 0,4 / 2-1 = 0 + 0,8 0
» 0,8 / 2-1 = 1 + 0,6 1 (LSBf)
» …. (perioadă)
Aproximarea reprezentării

• Dacă numărul are mai multe cifre la partea


fracţionară decât admite codificarea, atunci
există o aproximare
• de cel mult 2-k, dacă m=k.
• Dacă există la partea întreagă mai multe cifre decât se pot
reprezenta, atunci se produce depăşire.
Conversii între baze care sunt
puteri ale acelaşi număr

• d1 = 8 = 23 ; d2 = 16 = 24
• 703,102(8) =
• = 111 000 011 , 001 000 010 (2) =
• = 0001 1100 0011 , 0010 0001 0000 (2) =
• = 1C3,21(16)
&IV.4.2.
Reprezentările
BCD şi în exces
• Coduri poziţionale
– Sisteme de numeraţie bazate pe scrierea poziţională
• de exemplu, codul BCD
• Coduri non-poziţionale
• De exemplu, codul Excess-k
» k=3 etc.
» în general, k=2p-1.
• Pentru aplicaţii tip business, numerele se pot
reprezenta ca şiruri de cifre în baza 10, fiecare
cifră fiind reprezentată pe 4 biţi
• BCD, Excess
Codurile BCD şi Excess-3
• Zecimal BCD Excess-3
0 0000 0011
1 0001 0100
2 0010 0101
...
7 0111 1010
8 1000 1011
9 1001 1100
• 1413(10) = 0001 0100 0001 0011(BCD)
Adunarea BCD
5 = 0101 + 5 = 0101+
8 = 1000
3 = 0011 13(10)= 1101
8(10)= 1000 = 8(BCD)  13(BCD) =
0001 0011

• Problemele apar atunci când suma


cifrelor depăşeşte 9
Adunarea BCD
Soluţie: se adună 6 (0110) atunci când
suma depăşeşte 9.

Temă: De ce?
5 = 0101 + 9 = 1001 +

8 = 1000 7 = 0111

1101 16(10) = 1 0000 (2)  16(BCD)

6 = 0110 + 6 = 0110

1 0011 = 1 3(BCD) 1 0110 = 1 6(BCD)


Sumator BCD
A3 B3 A2 B2 A1 B1 A0 B0

CO FA CI CO FA CI CO FA CI CO FA CI Cin

S S S S

A1 11XX

A2 1X1X

CO FA CI CO FA CI 0

S S

Cout S3 S2 S1 S0

Se adună 0110 la sumă dacă ea depăşeşte 1001 (11XX sau 1X1X)


&IV.4.3.
Reprezentarea numerelor
întregi:
aritmetica în virgulă fixă
• Omogenitate
• Nu se reprezintă semne speciale (“+”,”-”, “.” , “,”)
• Semnul este dat de un bit
• nu de codificarea pe mai mulţi biţi a unui caracter special (+ sau -)
• 0 pentru plus
• 1 pentru minus
• Excepţie: reprezentarea “cu exces”
• Pentru virgulă se ştie poziţia
• dar nu se reprezintă caracterul.
• Aceeaşi poziţie a virgulei pentru toate numerele: virgulă fixă
(“aritmetică întreagă”)
• Poziţie diferită de la număr la număr: virgulă mobilă (“aritmetică
flotantă”)
• Esenţial pentru portabilitate: standardizarea aritmeticii
(atât întreagă, cât şi fixă)
– În toate implementările
» Funcţiile elementare definite şi calculate la fel !
» Cazurile de excepţie tratate la fel
Codificări în virgulă fixă
• d = 2  ai B = {0,1}
• Obiectiv: eficienţa calculului
• Codificare / decodificare facilă (omogenitate)
• Algoritmi eficienţi
• În particular, un singur algoritm pentru adunare şi scădere
• Codificările în virgulă fixă se fac pe n+m biţi
• m 0; m=0 – numere întregi.
• n1; n=1 – numere subunitare
• Codificări în virgulă fixă
• Cantitate şi semn
• Complement faţă de 2
» în general, faţă de bază
• Complement faţă de 1
» în general, faţă de cifra maximă
Codificări redundante
• Reprezentarea numerelor pozitive
coincide la cele trei codificări.
• O codificare se numeşte redundantă dacă
există numere care au două reprezentări
diferite.
• În codificările v.f. folosite, singurul număr
ce poate avea două reprezentări este 0.
&IV.4.4.
Reprezentarea prin modùl şi semn
Reprezentarea prin modùl şi semn
• A+S
• ValA+Sn,m (an-1an-2….a1a0a-1…..a-m) =

an-2 × 2n-2 +…+ a-m × 2-m, dacă an-1 = 0

- (an-2 × 2n-2 +…+ a-m × 2-m), dacă an-1 = 1

• Coincide cu scrierea în baza 2


• dar semnul este un bit şi virgula implicită.
Reprezentarea prin modùl şi semn
• Pe n+m biţi există 2n+m reprezentări diferite
(şiruri diferite de biţi).
• Ele corespund la 2n+m -1 numere diferite
• Redundantă, căci 0 = valA+Sn,m (00…0) = valA+Sn,m (10…0).

• Cel mai mic număr reprezentabil este


minA+Sn,m = valA+Sn,m (11…1) = - (2n-1-2-m)
• Cel mai mare număr reprezentabil este
MaxA+Sn,m = valA+Sn,m (01…1) = 2n-1-2-m
• Intervalul pe care se află numerele
reprezentabile este [- (2n-1-2-m); + (2n-1-2-m)].
Reprezentarea prin modùl şi semn
• Numerele reprezentabile exact sunt cele
începând cu min = -(2n-1-2-m), cu pasul 2-m.
• Celelalte numere din interval se reprezintă
aproximativ, cu eroare de cel mult 2-m.
• Precizia reprezentării este 2-m.
• Pentru numere întregi, precizia este 1.

• Pentru n+m fixat


• creşterea magnitudinii duce la aproximare
mai slabă
• Precizie mai bună duce la magnitudine
scăzută
Exemple
• ValA+S 8,0 (00110011) = 51

00110011  + (20 + 21 + 24 + 25) = 51

• ValA+S 6,2 (00110011) = 12,75 = 51 : 22


00110011  + (2-2 + 2-1 + 22 + 23) = 12,75
• ValA+S 4,4 (00110011) = 3,1875 = 51 : 24
00110011  + (2-4 + 2-3 + 20 + 21) = 3,1875
Exemple
• ValA+S 8,0 (10110011) = - 51
10110011  - (20 + 21 + 24 + 25) = - 51
• minA+S 8,0 = valA+S 8,0(11111111) = - (27-20) = - (128 – 1)
= - 127
• maxA+S 8,0 = valA+S 8,0(01111111) = 27-20 = 128 – 1 =
127
• [-127; 127]  255 numere, din 1 în 1.
• ValA+S 4,4 (10110011) = - 3,1875
10110011  - (2-4 + 2-3 + 20 + 21) = - 3,1875
• minA+S 4,4 = valA+S 4,4(11111111) = - (23-2-4) = -7,9375
• maxA+S 4,4 = valA+S 4,4(01111111) = 23-2-4 = 8-0,0625 =
7,9375
• [-7,9375; 7,9375]  255 numere din 0,0625 în 0,0625.
Operaţii A+S
• Algoritmi de complexitate relativ mare
– Adunare / scădere
• Stabilirea semnului rezultatului (comparaţie
lexicografică)
• Implementarea algoritmilor uzuali de adunare /
scădere manuală
– Incluzând “împrumuturi” etc.
– Înmulţirea / împărţirea – analog celor manuale
&IV.4.5.

Reprezentarea în
complement faţă de 2
Complement
• Fie baza d > 1.
• Complementul unei cifre:
• Pentru o cifră a {0,1,…d-1}
cd(a) = (d – 1) – a
• Pentru d = 2 şi b  {0,1} :
c2(b) = (2 – 1) – b = 1 – b  b
• Dar complementul unui şir de biţi ?
Complement faţă de bază şi faţă de
cifra maximă
• Extinderea definiţiei complementului la un
şir de biţi se poate face în două moduri:
– Conform definiţiei pentru un bit (complement
faţă de cifra maximă)
• C1(1011) = 0100 C1(0100) = 1011
– Adaptând definiţia pentru şiruri (complement
faţă de bază).
• C2(1011) = 0100  0001 = 0101
• C2(0101) = 1010  0001 = 1011
Reprezentarea în
complement faţă de 2

• Cel mai frecvent utilizată


• Adunarea şi scăderea cu acelaşi algoritm /
circuit
• Testarea automată a depăşirilor
C2 - definiţie
• Complement faţă de 2: C2
• ValC2n,m (an-1an-2….a1a0a-1…..a-m) =

an-2 × 2n-2 +…+ a-m × 2-m, dacă an-1 = 0

(an-2 × 2n-2 +…+ a-m × 2-m) – 2n-1, dacă an-1 = 1

• Temă: strict negativ pentru an-1=1.


• Deci, an-1 reprezintă semnul.
Reprezentarea în
complement faţă de 2
• Cele 2n+m reprezentări diferite (şiruri diferite de
biţi) corespund la 2n+m numere diferite.
• Neredundantă: 0= ValC2n+m (00…0)
• Temă: 0 nu poate fi reprezentat ca număr negativ.
• Cel mai mic număr reprezentabil este
minC2n,m = valC2n,m (10…0) = - 2n-1
• Cel mai mare număr reprezentabil este
MaxC2n,m = valC2n,m (01…1) = 2n-1-2-m
• Intervalul pe care se află numerele
reprezentabile este deci [- 2n-1; + (2n-1-2-m)].
Reprezentarea în
complement faţă de 2
• Numerele reprezentabile exact sunt cele
începând cu min = -2n-1, cu pasul 2-m.
• Celelalte numere din interval se reprezintă
aproximativ, cu eroare de cel mult 2-m.
• Precizia reprezentării este 2-m.
• Pentru numere întregi, m=0, deci precizia este 1.
• Pentru n+m fixat
• creşterea magnitudinii duce la aproximare
mai slabă
• Precizie mai bună duce la magnitudine
scăzută
Reprezentarea în complement faţă de 2
• ValC2 8,0 (00110011) = 51

• 00110011  + (20 + 21 + 24 + 25) = 51

• ValC2 6,2 (00110011) = 12,75 = 51 : 22

• 00110011  + (2-2 + 2-1 + 22 + 23) = 12,75


• ValC2 4,4 (00110011) = 3,1875 = 51 : 24

• 00110011  + (2-4 + 2-3 + 20 + 21) = 3,1875


Reprezentarea în complement faţă de 2
• ValC2 8,0 (10110011) = - 77
• 10110011  (20 + 21 + 24 + 25) – 27 = 51 – 128 = -77

• minC2 8,0 = valC2 8,0(10000000) = 0 – 27 = 0 - 128 = - 128


• maxC2 8,0 = valC2 8,0(01111111) = 27-20 = 128 – 1 = 127
• [-128; 127]  256 numere, din 1 în 1.

• ValC2 4,4 (10110011) = - 4,8125 = -77 : 24


• 10110011  (2-4 + 2-3 + 20 + 21) – 23= 3,1875 – 8 =
= - 4,8125
• minC2 4,4 = valC2 4,4(10000000) = 0 - 23 = - 8 = - 128 : 24
• maxC2 4,4 = valC2 4,4(01111111) = 23-2-4 = 8-0,0625 =
7,9375 = 127 : 24
• [-8; 7,9375]  256 numere din 0,0625 în 0,0625.
C2 - complementare
• Dată reprezentarea lui q, se poate afla
automat reprezentarea lui –q?
• Dacă da, atunci scăderea p-q devine adunare,
după generarea automată a reprezentării lui –q:
p - q = p + (-q)
• Reprezentarea lui –q: complementul faţă
de 2 al reprezentării lui q.
• Exemplu: q = - 77 = ValC2 8,0 (10110011)
• -q = 77 = ValC2 8,0 (0100110000000001)
= ValC2 8,0 (01001101) = 64+8+4+1.
Temă
• Reprezentarea în C2 pe N biţi a numărului
întreg negativ q este de fapt reprezentarea
pe N biţi a numărului q + 2N = 2N - |q|
• a + a = 11….11  -1, deci (- a) = a  1
• a notează negaţia bit cu bit a reprezentării
numărului a.
• a notează atât numărul, cât şi reprezentarea sa; se
foloseşte aici implicit faptul că numerele pozitive se
reprezintă ca în baza 2.
&IV.4.6.

Reprezentarea în
complement faţă de 1
Reprezentarea în
complement faţă de 1
• Asemănătoare cu C2, dar la decodificarea
numerelor negative se adaugă precizia.
• Complement faţă de 1: C1
• ValC1n,m (an-1an-2….a1a0a-1…..a-m) =
an-2 × 2n-2 +…+ a-m × 2-m, dacă an-1 = 0

(an-2 × 2n-2 +…+ a-m × 2-m) – (2n-1 – 2-m), dacă an-1 = 1

• Temă: negativ pentru an-1=1.


• Deci, an-1 reprezintă semnul.
Reprezentarea în
complement faţă de 1
• Cele 2n+m reprezentări diferite (şiruri diferite de
biţi) corespund la 2n+m-1 numere diferite.
• Redundantă: 0 poate fi reprezentat şi ca număr negativ.
• Cel mai mic număr reprezentabil este
minC1n,m = valC1n,m (10…0) = - (2n-1 – 2-m)
• Cel mai mare număr reprezentabil este
MaxC1n,m = valC1n,m (01…1) = 2n-1-2-m
• Intervalul pe care se află numerele
reprezentabile este deci [-(2n-1-2-m) ; + (2n-1-2-m)].
Reprezentarea în
complement faţă de 1
• ValC1 8,0 (00110011) = 51

• 00110011  + (20 + 21 + 24 + 25) = 51

• ValC1 6,2 (00110011) = 12,75 = 51 : 22

• 00110011  + (2-2 + 2-1 + 22 + 23) = 12,75


• ValC1 4,4 (00110011) = 3,1875 = 51 : 24

• 00110011  + (2-4 + 2-3 + 20 + 21) = 3,1875


Reprezentarea în
complement faţă de 1
• ValC1 8,0 (10110011) = - 76
• 10110011  (20 + 21 + 24 + 25) – (27 – 20) = 51 – 127 = -76

• minC1 8,0 = valC1 8,0(10000000) = 0 – (27 – 20) = 0 - 127 = - 127


• maxC1 8,0 = valC1 8,0(01111111) = 27-20 = 128 – 1 = 127
• [-127; 127]  255 numere, din 1 în 1.

• ValC1 4,4 (10110011) = - 4,75 = -76 : 24


• 10110011  (2-4 + 2-3 + 20 + 21) – (23-2-4) = 3,1875 – 7,9375 =
= - 4,75

• minC1 4,4 = valC1 4,4(10000000) = 0 - (23-2-4) = – 7,9375 = - 127 : 24


• maxC1 4,4 = valC1 4,4(01111111) = 23-2-4 = 8-0,0625 = 7,9375 = 127 :
24
• [-7,9375; 7,9375]  255 numere din 0,0625 în 0,0625.
C1 - complementare
• Dată reprezentarea lui q, se poate afla automat
reprezentarea lui –q?
• Dacă da, atunci scăderea p-q devine adunare, după
generarea automată a reprezentării lui –q: p - q = p + (-q)
• Reprezentarea lui –q: complementul faţă de 1 al
reprezentării lui q.
• Exemplu: q = - 76 = ValC1 8,0 (10110011)
• q = 76 = ValC1 8,0 (01001100) = 64+8+4.
• Din cauza redundanţei şi a adunării preciziei (în
sumă algebrică, de două ori), algoritmii de calcul
în C1 sunt mai puţin eficienţi decât cei în C2.
• De aceea, reprezentarea cvasi-general utilizată
este C2.
Reprezentări în virgulă fixă, 4,0
şirul de biţi A+S C2 C1 XS-7

0000 +0 0 +0 -7
0001 +1 +1 +1 -6
0010 +2 +2 +2 -5
0011 +3 +3 +3 -4
0100 +4 +4 +4 -3
0101 +5 +5 +5 -2
0110 +6 +6 +6 -1
0111 +7 +7 +7 0
1000 -0 -8 -7 +1
1001 -1 -7 -6 +2
1010 -2 -6 -5 +3
1011 -3 -5 -4 +4
1100 -4 -4 -3 +5
1101 -5 -3 -2 +6
1110-6 -2 -1 +7
1111 -7 -1 -0 +8
&IV.4.7.

Depăşiri pentru operaţii cu


reprezentări în virgulă fixă
Trecerea la reprezentări mai lungi
• Adăugare de cifre nesemnificative la
partea întreagă
• Ce înseamnă cifră nesemnificativă ?
• A+S: zerouri imediat după cifra semn
» ValA+S 8,0 (00110011) = 51
» ValA+S 16,0 (0000000000110011) = 51
» ValA+S 8,0 (10110011) = - 51
» ValA+S 16,0 (1000000000110011) = - 51
• C2, C1: repetări ale cifrei semn imediat după ea
» ValC28,0(0110011) =51= ValC216,0(000000000110011).
» ValC2 8,0 (10110011) = -77
» ValC2 16,0 (1111111110110011) = - 77
» ValC1 8,0 (10110011) = - 76
» ValC1 16,0 (1111111110110011) = - 76
• Interesează mai mult trecerea la
reprezentări mai scurte: încape
reprezentarea corectă a rezultatului pe
n+m biţi ?
Mulţimea numerelor reprezentabile
• Submulţime finită a mulţimii numerelor
raţionale
• Qrepn,m , unde rep{A+S, C1, C2}
• Qrepn,m  [min; Max] 
• QC28,0 = {-128; -127; -126;…-1; 0; 1; ...127}
• QC24,4 = {-8; -7,9375; … -0,0625; 0;
0,0625; … 7,9375}
• QA+Sn,m ={-(2n-1-2-m); -(2n-1-2-m+1);
-(2n-1-3×2-m); …-2-m; 0; +2-m; … (2n-1-2-m)}
• Qrepn,m  Qrepn+k,m , k=1,2,… 
Importanţa reprezentării în
complement faţă de 2 (*)
• Cel mai simplu circuit de adunare a două
reprezentări: sumator complet la fiecare
rang şi ignorarea transportului de la rangul
cel mai semnificativ.
• Temă: adunarea în C1 implică o operaţie
suplimentară.
• Testare simplă a depăşirilor.
• Un număr în plus reprezentat pe aceeaşi
lungime (reprezentare neredundantă).
Operaţii în C2 (*)
• Vom prezenta pe scurt doar proprietăţi ale
adunării şi scăderii (suma algebrică) în C2.
• Termenii sumei şi rezultatul se reprezintă
pe acelaşi număr de biţi
• Uneori această restricţie cauzează depăşiri
• Înmulţirea şi împărţirea ar trebui să aibă,
pentru reprezentarea rezultatului, o
lungime dublă faţă de lungimea comună a
operanzilor.
• Aceeaşi definiţie a depăşirii
Depăşiri
• Fie rep o reprezentare şi op o operaţie cu
numere, iar op operaţia corespunzătoare
cu reprezentări rep. Fie a, b  Qrepn,m .
• Spunem că operaţia op aplicată numerelor
a şi b produce depăşire dacă:
a op b  [min; Max] 
• Este una din situaţiile repr(n1) op repr(n2)  repr
(n1 op n2)
• Anume, eroare la partea întreagă
• Depăşire înseamnă rezultat eronat
• Nu se poate produce depăşire la partea fracţionară
– ci doar aproximare (rezultat aproximativ, nu eronat)
Depăşire – exemplul 1
• În reprezentarea C2 , cu n = 4, m = 0 :
• 1111  1111 = 11110  1110
» Se “pierde” o cifră (rezultatul nu “încape” pe 4 biţi)

• valC24,0(1111) = -1
• (-1) + (-1) = -2
• valC24,0(1110) = -2
» Rezultat corect, deci nu se produce depăşire
» Testarea depăşirii cu definiţia:
» QC24,0  [-8; 7]. -1QC24,0 . -2  [-8; 7].
» Calculatorul nu poate însă testa definiţia, întrucât
“ştie” reprezentările, nu numerele reprezentate
Depăşire – exemplul 2
• În reprezentarea C2 , cu n = 4, m = 0 :
• 0111  0111 = 1110
» Nu se “pierde” nici o cifră

• valC24,0(0111) = 7
• 7 + 7 = 14
• valC24,0(1110) = -2
» Rezultat eronat, deci se produce depăşire
» Testarea depăşirii cu definiţia:
» QC24,0  [-8; 7]. 7QC24,0 . 14  [-8; 7].
» Calculatorul nu poate însă testa definiţia, întrucât nu
“ştie” numerele reprezentate
Depşirea la adunare în C2
• De fapt, cifra de transport de la rangul cel
mai semnificativ (fie 0, fie 1) se pierde
întotdeauna din rezultat
• dar se reţine în indicatorul C (transport general)
• Trebuie găsită o condiţie asupra
reprezentărilor care, testată, să semnaleze
depăşirea
• Fără a folosi definiţia -numerele nu sunt disponibile
• Testarea va fi făcută de un circuit ataşat
sumatorului
Condiţia de depăşire

• Un alt mod de a vedea depăşirea la adunare:


• Depăşire se produce numai atunci când ambii
operanzi au acelaşi semn, iar reprezentarea
rezultatului indică semn opus.
• Temă:
• Nu este posibil ca definiţia depăşirii (cu numere) să fie
satisfăcută când numerele au semn opus.
• Studiul adunării reprezentărilor pentru cazurile: ambele
numere pozitive, ambele numere negative. Concluzie.
Rezultate asupra
sumei algebrice în C2 (*)
• Teorema 1.
Dacă a, b  QC2n,m , atunci a+b  QC2n+1,m
• Lema 2.
Dacă
a= ValC2n+1,m (nn-1….10-1…..-m),
cu n = n-1
atunci
a= ValC2n,m (n-1n-2….10-1…..-m),
Rezultate asupra sumei algebrice în C2
(*)
• Definiţie. Date reprezentările  şi ,
 = n-1….10-1…..-m şi
 = n-1….10-1…..-m (i ,i  {0,1}),
suma lor formală  =    este
 = n n-1 …10 -1… -m , unde
i=-mn (i × 2i) = i=-mn-1 ( (i  i)× 2i )
• Teorema 3. Dacă suma algebrică a numerelor
reprezentate de  şi  nu produce depăşire,
atunci reprezentarea rezultatului este
n-1 …10 -1… -m .
• Consecinţă: sumatorul serial efectuează
adunări corecte
• semnul se adună ca oricare altă cifră.
Testarea depăşirii
• Teorema 4.
• Suma algebrică a numerelor reprezentate de 
şi  nu produce depăşire dacă cifrele transport
Cn-1 şi Cn coincid.
• 1111  1111 : cifrele-transport C3 şi C4 sunt identice (egale cu
1).
• 0111  0111 : cifrele-transport C3 şi C4 diferă (prima este 1, a
doua este 0).
• Consecinţă: testarea depăşirii în UAL prin
adăugarea la sumatorul serial a unei porţi NXOR
• în care intră cifrele-transport Cn-1 şi Cn
• şi din care iese bitul-flag O (overflow)
• Cifra-transport Cn poziţionează şi bitul-flag C (carry).
&IV.4.8.

Reprezentarea
numerelor reale:
aritmetica în virgulă mobilă
Reprezentarea în virgulă mobilă (*)
• Reprezentările în virgulă fixă nu sunt potrivite
pentru numere reale
• Dualitatea magnitudine / precizie
– lungimea n+m fixată
– Creşterea magnitudinii înrăutăţeşte precizia şi
reciproc
• Virgulă mobilă: un număr se reprezintă printr-o
pereche de reprezentări în virgulă fixă
– Permiţând reprezentarea simultană de numere cu
magnitudini şi precizii diferite
Notaţia ştiinţifică; normalizare (*)
• Exemple
• 7.015791043…zece
» scriere poziţională
• 55312.1784zece X 10 -105
» ar necesita 110 cifre în scriere poziţională, doar 14 aici.
• 0.00000083zece X 10 4
» Se poate scrie şi eliminând zerourile semnificative
– Numeroase scrieri posibile pentru acelaşi număr
• Notaţia ştiinţifică:
– o singură cifră la stânga virgulei
– 0.031056zece X 10 7
– Încă numeroase scrieri posibile pentru acelaşi număr
» m1 X Be1 = m2 X Be1+k , unde m2 = m1 / B-k , pt. oricare k  Z.
• Scriere normalizată: reprezentare în notaţie ştiinţifică
fără prefix de zerouri semnificative
• 6.15zece X 10 -75
» Poziţional  78 de cifre semnificative, dintre care 75 zerouri.
– Unică pentru un număr dat.
Notaţia ştiinţifică în binar
• 1.101doi X 2 2

• 6,5zece

• 1.xxx…xdoi X 2 yyy
• În binar, doar numărul 0 nu conţine nici o cifră 1
» Definire specială a reprezentării lui 0.
• Pentru oricare alt număr reprezentabil, cel mai
semnificativ 1 trebuie să devină singura cifră de la partea
întreagă
» Ceea ce, în general, alterează exponentul lui 2.
Reprezentări în virgulă mobilă
• Semnul S: 0 sau 1
• 1 bit
• Partea fracţionară f ; mantisa este 1+f
• mantisa are 1+23 (sau 1+52) biţi
• Caracteristica C
• k=8 sau k=11 biţi. exces = 2k-1 – 1
• c = exponent + exces.
• x = ( +/- ) 1.f  B c – exces
• Primul 1 şi baza 2 se subînţeleg/nu se reprezintă
» O figură similară pentru numerele reprezentabile în virgulă fixă ar indica un
singur interval conţinând numere reprezentabile, simetric faţă de 0 şi cu cele
două capete aflate fiecare într-unul din intervalele figurate aici cu verde.

Interval conţinând
Interval conţinând
numerele negative zero numerele pozitive
reprezentabile
reprezentabile

Depăşire Depăşire Depăşire


superioară inferioară superioară
exponent exponent exponent
Standardizare
• Esenţială pentru portabilitate şi pentru
ataşarea unei semantici generale a
reprezentării în virgulă mobilă.
• Proces început în 1977, încheiat parţial în
1985.
• W. Kahan (University of Toronto)
• Prima implementare comercială a
standardului IEEE (pe atunci, în curs de
elaborare): 1981 - Intel 8087.
Standardul IEEE 754 / 1985
• Precizie simplă:
0 1 8 9 31
s c = caracteristică f = partea fracţionară a mantisei

Interesează nu doar structura reprezentării, ci mai ales


operaţiile ce se pot efectua cu reprezentări.
Exemple:
Compararea: reprezentarea în XS are avantajul inducerii ordinii naturale
pe mulţimea reprezentării exponenţilor.
Înmulţirea: adunarea exponenţilor la înmulţire – cu scăderea excesului!

• Precizie simplă: float în C/C++ (32 biţi)


Precizie dublă
• Precizie dublă: double în C/C++ (64 biţi)

0
1 11 20 31

s exponent + 1023 f = partea fracţionară a mantisei

continuarea părţii fracţionare a mantisei


0 31
32
Margini în baza 10: 2.0 X 10 -308  2.0 X 10 308
Faţă de precizia simplă:
- Creşte intervalul pentru exponent
- La exponent egal, creşte acurateţea (precizia) reprezentării
datorită lungimii mai mari a părţii fracţionare a mantisei
Două reprezentări în virgulă fixă
=
o reprezentare în virgulă mobilă
• Mantisa: reprezentare cantitate şi
semn (A+S) a coeficientului
puterii bazei
• Caracteristica: reprezentare în
exces a exponentului.
• Există deci o valoare minimă emin şi
una maximă emax pentru exponent
– De unde structura mulţimii numerelor
reprezentabile
• Ordinea din reprezentare (S C f)
facilitează compararea reprezentărilor
• ordinea numerelor reprezentate coincide astfel cu
ordinea lexicografică a reprezentărilor
Reprezentări în norma IEEE 754
Precizie simplă Precizie dublă

Biţi “precizie” 24 53

Exponent maxim 128 1024


(pentru numere: 127) (pentru numere: 1023)

Exponent minim -127 -1023


(pentru numere (pentru numere
normalizate: -126) normalizate: -1022)

Exces (exponent) 127 1023


Un exemplu
• Cum se reprezintă numărul -7 în virgulă
mobilă simplă precizie (IEEE 754) ?
1. Semnul: minus, deci 1
2. Trecere în baza 2: 7zece = 111doi
3. Normalizare: 111doi = 1.11doi × 22zece
4. Calculul caracteristicii (pe 8 biţi) :
( 2 + 127)zece= 129zece = 10000001doi
5. Reprezentarea:
1 100.0000.1 110.0000.0000.0000.0000.0000doi
C0E00000hexazecimal
Încă un exemplu
• Cum se scrie poziţional în baza zece numărul
reprezentat în simplă precizie IEEE 754 prin
C1F00000 hexazecimal ?
1. Scriere în binar: C1F00000hexazecimal =
1100 0001 1111 0000 0000 0000 0000 0000doi
2. Semn: 1, deci – (număr negativ)
3. Caracteristica: 10000011doi = 131zece
4. Exponentul: 131 – 127 = 4
5. Mantisa: (1 + 0,111 )doi = 1,111doi
6. Valoarea: -1,111 × 24 = -11110doi = -30zece
Aritmetica extinsă (principii)
• Aritmetica reală uzuală
– Proiectată pe mulţimea numerelor reale
reprezentabile
– Cu operaţiile uzuale
• La care se adaugă:
– Reprezentare pentru  şi reguli elementare
de calcul cu acesta (a / ,  + )
– Reprezentări pentru rezultatul operaţiilor
nedefinite (NaN) şi reguli de propagare a
acestuia (NaN op x = NaN)
Aritmetica extinsă - exemplu
• Calculul lui arccos cu formula:
arccos (x) = 2arctan sqrt ( (1-x) / (1+x) )
• arccos(-1) = ?
• 1+x  0  2 / (1+x)   
arctan((1-x) / (1+x) )   / 2.
• Aceste relaţii fac parte din aritmetica în
virgulă mobilă IEEE 754.
• Rezultat - corect: arccos (-1) = .
Tipuri de valori în virgulă mobilă
• În fiecare caz de mai jos, S este +1 sau -1 după
cum bitul semn este 0 sau 1
Tip valoare e f Valoare
normalizată emin<e<emax f oarecare (-1)s  1.f  2e
denormalizată e = emin f0 (-1)s  0.f  2e
zero e=0 f=0 S0
infinit e = emax f=0 S
NaN e = emax f0 NaN
Depăşiri
• Depăşire inferioară: în forma normalizată
a numărului, exponentul negativ nu poate
fi reprezentat în câmpul caracteristicii
• Depăşire superioară: în forma
normalizată a numărului, exponentul
pozitiv este prea mare pentru a putea fi
reprezentat în câmpul caracteristicii
Aritmetica în virgulă mobilă
• În general: fie x = xm × 2xe şi y = ym × 2ye,
• Relaţiile de mai jos se referă la notaţia ştiinţifică,
nu la reprezentarea în standard IEEE
» xm şi ym sunt mantisele, iar xe şi ye exponenţii (nu
caracteristicile)

• x + y = (xm × 2xe-ye + ym) × 2ye , dacă xe  ye


• x - y = (xm × 2xe-ye - ym) × 2ye , dacă xe  ye
• x × y = (xm × ym) × 2xe+ye
• x : y = (xm : ym) × 2xe-ye

• Operaţiile sunt însă mai complicate decât


o arată formulele
Adunarea în virgulă mobilă
1. Se compară exponenţii termenilor adunării.
Dacă aceştia sunt diferiţi, atunci partea fracţionară a numărului
mai mic se deplasează spre dreapta (denormalizare!) până când
exponentul său devine egal cu exponentul mai mare
2. Se adună mantisele
Aici se decide şi semnul sumei
Adunarea mantiselor se efectuează în complement faţă de 2
Deci pentru numere negative, se face complementarea
corespunzătoare, iar rezultatul – dacă este negativ – se
complementează pentru a reveni la A+S.
3. Dacă este nevoie, se normalizează suma
fie decalând rezultatul spre dreapta şi incrementând exponentul,
fie decalând spre stânga şi decrementând exponentul
4. Dacă se poduce depăşire  excepţie  stop
5. Rotunjeşte mantisa la numărul permis de biţi. Dacă
astfel s-a produs denormalizare, reia de la 3.
6. Stop.
Temă
• Să se urmărească paşii adunării în virgulă
mobilă pentru reprezentările numerelor
scrise în baza zece ca 0,75 şi -0,375.
Se va considera că semnul, exponentul şi
mantisa sunt obţinute ca pentru IEEE 754,
dar se reprezintă pe 1 bit, 8 biţi, respectiv
4 biţi.
Înmulţirea în virgulă mobilă
1. Se calculează exponentul rezultatului adunând
exponenţii celor doi factori
Se adună caracteristicile şi se scade excesul
2. Se înmulţesc mantisele
3. Se normalizează rezultatul
Dacă se produce depăşire excepţie  stop
4. Se fac rotunjirile necesare
Dacă se produce denormalizare, reia de la 3.
5. Se determină semnul rezultatului
6. Stop.
Temă
• Să se urmărească paşii înmulţirii în virgulă
mobilă pentru reprezentările numerelor
scrise în baza zece ca 0,75 şi 0,375.
Reprezentările sunt cele din standardul
IEEE 754.

S-ar putea să vă placă și