1 / 55

Operaţii A+S

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.

zenia
Download Presentation

Operaţii A+S

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. &IV.4.5.Reprezentarea încomplement faţă de 2

  3. 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 ?

  4. 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

  5. Reprezentarea încomplement faţă de 2 • Cel mai frecvent utilizată • Adunarea şi scăderea cu acelaşi algoritm / circuit • Testarea automată a depăşirilor

  6. 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.

  7. Reprezentarea încomplement 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)].

  8. Reprezentarea încomplement 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ă

  9. Reprezentarea în complement faţă de 2 • ValC28,0 (00110011) = 51 • 00110011  + (20 + 21 + 24 + 25) = 51 • ValC26,2 (00110011) = 12,75 = 51 : 22 • 00110011  + (2-2 + 2-1 + 22 + 23) = 12,75 • ValC24,4 (00110011) = 3,1875 = 51 : 24 • 00110011  + (2-4 + 2-3 + 20 + 21) = 3,1875

  10. Reprezentarea în complement faţă de 2 • ValC28,0 (10110011) = - 77 • 10110011  (20 + 21 + 24 + 25) – 27 = 51 – 128 = -77 • minC28,0 = valC28,0(10000000) = 0 – 27 = 0 - 128 = - 128 • maxC28,0 = valC28,0(01111111) = 27-20 = 128 – 1 = 127 • [-128; 127]  256 numere, din 1 în 1. • ValC24,4 (10110011) = - 4,8125 = -77 : 24 • 10110011  (2-4 + 2-3 + 20 + 21) – 23= 3,1875 – 8 = = - 4,8125 • minC24,4 = valC24,4(10000000) = 0 - 23 = - 8 = - 128 : 24 • maxC24,4 = valC24,4(01111111) = 23-2-4 = 8-0,0625 = 7,9375 = 127 : 24 • [-8; 7,9375]  256 numere din 0,0625 în 0,0625.

  11. 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 = ValC28,0 (10110011) • -q = 77 = ValC28,0 (0100110000000001) = ValC28,0 (01001101) = 64+8+4+1.

  12. 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.

  13. &IV.4.6.Reprezentarea încomplement faţă de 1

  14. Reprezentarea încomplement 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.

  15. Reprezentarea încomplement 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)].

  16. Reprezentarea încomplement faţă de 1 • ValC18,0 (00110011) = 51 • 00110011  + (20 + 21 + 24 + 25) = 51 • ValC16,2 (00110011) = 12,75 = 51 : 22 • 00110011  + (2-2 + 2-1 + 22 + 23) = 12,75 • ValC14,4 (00110011) = 3,1875 = 51 : 24 • 00110011  + (2-4 + 2-3 + 20 + 21) = 3,1875

  17. Reprezentarea încomplement faţă de 1 • ValC18,0 (10110011) = - 76 • 10110011  (20 + 21 + 24 + 25) – (27 – 20) = 51 – 127 = -76 • minC18,0 = valC18,0(10000000) = 0 – (27 – 20) = 0 - 127 = - 127 • maxC18,0 = valC18,0(01111111) = 27-20 = 128 – 1 = 127 • [-127; 127]  255 numere, din 1 în 1. • ValC14,4 (10110011) = - 4,75 = -76 : 24 • 10110011  (2-4 + 2-3 + 20 + 21) – (23-2-4) = 3,1875 – 7,9375 = = - 4,75 • minC14,4 = valC14,4(10000000) = 0 - (23-2-4) = – 7,9375 = - 127 : 24 • maxC14,4 = valC14,4(01111111) = 23-2-4 = 8-0,0625 = 7,9375 = 127 : 24 • [-7,9375; 7,9375]  255 numere din 0,0625 în 0,0625.

  18. 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 = ValC18,0 (10110011) • q = 76 = ValC18,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.

  19. 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

  20. &IV.4.7.Depăşiri pentru operaţii cu reprezentări în virgulă fixă

  21. 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). • ValC28,0 (10110011) = -77 • ValC216,0 (1111111110110011) = - 77 • ValC18,0 (10110011) = - 76 • ValC116,0 (1111111110110011) = - 76

  22. Interesează mai mult trecerea la reprezentări mai scurte: încape reprezentarea corectă a rezultatului pe n+m biţi ?

  23. 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,… 

  24. 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ă).

  25. 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

  26. 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)

  27. 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

  28. 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

  29. 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

  30. 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.

  31. Rezultate asuprasumei 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),

  32. 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ă.

  33. 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).

  34. &IV.4.8.Reprezentareanumerelor reale:aritmetica în virgulă mobilă

  35. 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

  36. 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.

  37. 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.

  38. 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 numerele pozitive reprezentabile Interval conţinând numerele negative reprezentabile zero Depăşire superioară exponent Depăşire inferioară exponent Depăşire superioară exponent

  39. 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.

  40. 0 1 8 9 31 c = caracteristică f = partea fracţionară a mantisei s Standardul IEEE 754 / 1985 • Precizie simplă: • 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)

  41. Precizie dublă • Precizie dublă: double în C/C++ (64 biţi) 20 1 11 0 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

  42. 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.

  43. 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

  44. Reprezentări în norma IEEE 754

  45. Un exemplu • Cum se reprezintă numărul -7 în virgulă mobilă simplă precizie (IEEE 754) ? • Semnul: minus, deci 1 • Trecere în baza 2: 7zece = 111doi • Normalizare: 111doi = 1.11doi × 22zece • Calculul caracteristicii (pe 8 biţi) : ( 2 + 127)zece= 129zece = 10000001doi • Reprezentarea: 1100.0000.1110.0000.0000.0000.0000.0000doi C0E00000hexazecimal

  46. Încă un exemplu • Cum se scrie poziţional în baza zece numărul reprezentat în simplă precizie IEEE 754 prin C1F00000 hexazecimal ? • Scriere în binar: C1F00000hexazecimal = 1100 0001 1111 0000 0000 0000 0000 0000doi • Semn:1, deci – (număr negativ) • Caracteristica:10000011doi = 131zece • Exponentul: 131 – 127 = 4 • Mantisa: (1 + 0,111 )doi = 1,111doi • Valoarea:-1,111× 24 = -11110doi = -30zece

  47. 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)

  48. 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) = .

  49. 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

  50. 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

More Related