Florian Mircea Boian

 

 

De la aritmetică la calculatoare

 

 

Cluj University Press

1996

 

 

 

C U P R I N S

PREFATA. . . . . . . . . . . . . . . . . . . . . . . . . .   6

 

Capitolul 0  PRELIMINARII. . . . . . . . . . . . . . . . .   8

 0.1 Elemente de aritmetică. . . . . . . . . . . . . . . .   8

      0.1.1 Cāteva proprietăţi ale funcţiei modulo . . . .   8

      0.1.2 Funcţii de tip parte īntreagă. . . . . . . . .   9

 0.2 Elemente de algebră Booleană. . . . . . . . . . . . .  11

      0.2.1 Mulţimea B2; operaţii. . . . . . . . . . . . .  11

      0.2.2 Funcţii Booleene şi reprezentări ale lor . . .  13

 0.3 Structura şi funcţiile unui sistem de calcul. . . . .  15

      0.3.1 Principiile lui von Neumann de construire a unui

             calculator. . . . . . . . . . . . . . . . . .  15

      0.3.2 Modelul formal al unui calculator. . . . . . .  16

      0.3.3 Structura şi componentele unui SC. . . . . . .  17

             0.3.3.1 Structura şi funcţiile hardware . . .  17

             0.3.3.2 Memoria . . . . . . . . . . . . . . .  17

             0.3.3.3 Componenta de prelucrare. . . . . . .  19

             0.3.3.4 Periferice; clasificări . . . . . . .  19

             0.3.3.5 Componenta de control . . . . . . . .  20

             0.3.3.6 Caracteristicile hard ale suportului

                      de tip disc. . . . . . . . . . . . .  20

             0.3.3.7 Videoterminale. . . . . . . . . . . .  23

 

Capitolul 1  SISTEME SI BAZE DE NUMERATIE. . . . . . . . .  25

 1.1 Tipuri de sisteme de numeraţie. . . . . . . . . . . .  25

      1.1.1 Sistemul de numeraţie aditiv (roman) . . . . .  25

      1.1.2 Sistemul de numeraţie poziţional (arab). . . .  26

 1.2 Sisteme poziţionale de numeraţie īn diverse baze. . .  27

      1.2.1 Reprezentarea numerelor naturale īntr-o bază b  27

      1.2.2 Reprezentarea numerelor reale īntr-o bază b. .  29

      1.2.3 Conversii īntre baze de numeraţie. . . . . . .  32

             1.2.3.1 Conversia īntregilor prin īmpărţiri

                      succesive. . . . . . . . . . . . . .  32

             1.2.3.2 Conversia părţilor fracţionare prin

                      īnmulţiri succesive. . . . . . . . .  34

             1.2.3.3 Conversia prin metoda substituţiei. .  37

             1.2.3.4 Sumar al conversiilor īntre baze. . .  38

             1.2.3.5 Conversie rapidă īntre bazele 8 şi 10  39

 1.3 Relaţii īntre bazele 2, 8 şi 16 . . . . . . . . . . .  40

      1.3.1 Cifre binare, octale, zecimale, hexazecimale .  40

      1.3.2 Conversii binar - octal. . . . . . . . . . . .  41

      1.3.3 Conversii binar - hexazecimal. . . . . . . . .  43

      1.3.4 Conversii octal - hexazecimal. . . . . . . . .  44

 

Capitolul 2  CELE PATRU OPERATII CU BAZE MARI DE NUMERATIE  45

 2.1 Adunarea īn baza P. . . . . . . . . . . . . . . . . .  45

 2.2 Scăderea īn baza P. . . . . . . . . . . . . . . . . .  47

 2.3 Inmulţirea īn baza P. . . . . . . . . . . . . . . . .  48

 2.4 Impărţirea īn baza P. . . . . . . . . . . . . . . . .  49

 2.5 Implementări ale unor aritmetici. . . . . . . . . . .  53

      2.5.1 Unitatea B2E16 . . . . . . . . . . . . . . . .  53

      2.5.2 Unitatea B2TOZ . . . . . . . . . . . . . . . .  53

 

Capitolul 3  CODIFICAREA INFORMATIEI . . . . . . . . . . .  57

3.1 Noţiunea de cod; exemple . . . . . . . . . . . . . . .  57

     3.1.1 Definirea codului . . . . . . . . . . . . . . .  57

     3.1.2 Exemple simple de coduri. . . . . . . . . . . .  58

     3.1.3 Problema decodificării. . . . . . . . . . . . .  59

 3.2 Codificarea datelor īn calculator . . . . . . . . . .  61

      3.2.1 Codificarea caracterelor . . . . . . . . . . .  61

      3.2.2 Codificări zecimale ale numerelor īntregi. . .  64

             3.2.2.1 Codificarea zecimal - externă . . . .  64

             3.2.2.2 Codificarea binar - zecimală. . . . .  65

      3.2.3 Reprezentări binare ale numerelor reale. . . .  66

             3.2.3.1 Reprezentarea īn virgulă fixă . . . .  66

             3.2.3.2 Reprezentarea īn virgulă flotantă . .  68

             3.2.3.3 Standarde de reprezentare īn virgulă

                      flotantă . . . . . . . . . . . . . .  72

             3.2.3.4 Conceptul de depăşire . . . . . . . .  77

             3.2.3.5 Compararea numerelor reale. . . . . .  79

 

Capitolul 4  CODIFICARI BINARE SI ARITMETICA BINARA A

                        NUMERELOR INTREGI. . . . . . . . .  80

 4.1 Dimensiuni şi tipuri de reprezentări. . . . . . . . .  80

 4.2 Aritmetica numerelor īntregi fără semn. . . . . . . .  81

      4.2.1 Convenţia de reprezentare fără semn. . . . . .  81

      4.2.2 Adunarea şi scăderea fără semn . . . . . . . .  82

      4.2.3 Inmulţirea īntregilor fără semn. . . . . . . .  84

      4.2.4 Impărţirea īntregilor fără semn. . . . . . . .  85

 4.3 Reprezentări ale īntregilor cu semn . . . . . . . . .  87

      4.3.1 Particularizări ale reprezentării īn virgulă

             fixă. . . . . . . . . . . . . . . . . . . . .  87

      4.3.2 Coduri de reprezentare a īntregilor cu semn. .  88

             4.3.2.1 Codul direct. . . . . . . . . . . . .  88

             4.3.2.2 Codul invers. . . . . . . . . . . . .  89

             4.3.2.3 Codul complementar. . . . . . . . . .  91

 4.4 Operaţiile aritmetice īn cod complementar . . . . . .  93

      4.4.1 Suma algebrică īn cod complementar . . . . . .  93

      4.4.2 Inmulţirea īn cod complementar . . . . . . . .  96

      4.4.3 Impărţirea īn cod complementar . . . . . . . .  98

 4.5 Reprezentarea īn memorie a datelor numerice . . . . . 100

      4.5.1 Un program "ciudat". . . . . . . . . . . . . . 100

      4.5.2 Reprezentări numerice īn implementări de 

             limbaje . . . . . . . . . . . . . . . . . . . 103

      4.5.3 Ordinea de plasare la diverse maşini . . . . . 103

 

Capitolul 5  CODURI DETECTOARE DE ERORI. . . . . . . . . . 109

 5.1 Problema transmiterii informaţiei . . . . . . . . . . 109

 5.2 Coduri liniare binare . . . . . . . . . . . . . . . . 110

      5.2.1 Control prin bit de paritate . . . . . . . . . 110

      5.2.2 Definirea codului liniar binar . . . . . . . . 112

      5.2.3 Relaţii de control īn coduri liniare binare. . 113

      5.2.4 Evaluarea capacităţii de detecţie īn codurile

             liniare binare. . . . . . . . . . . . . . . . 116

      5.2.5 Coduri iterative . . . . . . . . . . . . . . . 117

 5.3 Structura unui bloc de informaţie pe un suport

      magnetic . . . . . . . . . . . . . . . . . . . . . . 118

 

Capitolul 6  CIRCUITE COMBINATIONALE . . . . . . . . . . . 122

 6.1 Circuite poartă şi realizarea lor fizică. . . . . . . 122

 6.2 Implementarea funcţiilor booleene folosind circuite

      poartă . . . . . . . . . . . . . . . . . . . . . . . 124

 6.3 Cāteva circuite remarcabile . . . . . . . . . . . . . 125

      6.3.1 Circuite de īnsumare binară. . . . . . . . . . 125

             6.3.1.1 Sumator binar cu o poziţie. . . . . . 125

             6.3.1.2 Sumator binar cu n poziţii. . . . . . 127

             6.3.1.3 Sumator binar pentru reprezentarea

                      īn cod invers. . . . . . . . . . . . 128

      6.3.2 Circuite de deplasare. . . . . . . . . . . . . 128

      6.3.3 Circuit multiplexor. . . . . . . . . . . . . . 130

      6.3.4 Circuit selector . . . . . . . . . . . . . . . 131

      6.3.5 Gestiunea bitului de paritate. . . . . . . . . 132

 

Capitolul 7  MODELAREA FUNCTIONARII PROCESORULUI . . . . . 133

 7.1 Maşina cu trei adrese . . . . . . . . . . . . . . . . 134

      7.1.1 Formatul instrucţiunilor . . . . . . . . . . . 134

      7.1.2 Tipuri de instrucţiuni şi lista acestora . . . 134

      7.1.3 Rezolvarea ecuaţiei de gradul 2 la maşina cu

             trei adrese . . . . . . . . . . . . . . . . . 136

      7.1.4 Codificare simbolică şi numerică a programelor

             (limbaj de asamblare şi limbaj maşină). . . . 138

 7.2 Maşina cu o adresă. . . . . . . . . . . . . . . . . . 140

      7.2.1 Arhitectura maşinii cu o adresă. . . . . . . . 140

      7.2.2 Tipuri de instrucţiuni şi lista acestora . . . 142

      7.2.3 Relaţii īntre maşinile cu trei adrese şi cu

             o adresă. . . . . . . . . . . . . . . . . . . 145

 7.3 Scheme de adresare. . . . . . . . . . . . . . . . . . 148

 7.4 Exemple de programe şi completări la maşina cu o

      adresă . . . . . . . . . . . . . . . . . . . . . . . 149

      7.4.1 Codificarea simbolică şi numerică. . . . . . . 149

             7.4.1.1 Principiile scrierii numerice . . . . 149

             7.4.1.2 Rezolvarea ecuaţiei de gradul 2 . . . 151

      7.4.2 Folosirea variabilelor cu indici . . . . . . . 151

             7.4.2.1 Suma a 100 de numere. . . . . . . . . 151

             7.4.2.2 Ordonarea unui şir prin metoda

                      bulelor. . . . . . . . . . . . . . . 153

      7.4.3 Exemplu de folosire a subprogramelor . . . . . 155

             7.4.3.1 Rezolvarea unei ecuaţii f(x)=0 prin

                      metoda coardei şi a tangentei. . . . 156

             7.4.3.2 Structura unui program format din mai

                      multe secţiuni . . . . . . . . . . . 157

             7.4.3.3 Comunicarea īntre secţiuni. . . . . . 159

             7.4.3.4 Programul de rezolvare a unei ecuaţii

                      f(x)=0 . . . . . . . . . . . . . . . 162

BIBLIOGRAFIE . . . . . . . . . . . . . . . . . . . . . . . 165

ANEXA 1  Sursele Pascal ale unităţii B2TOZ . . . . . . . . 166

ANEXA 2  Sursele Pascal ale unităţii ARITMBIN. . . . . . . 173

ANEXA 3  Utilizări ale unităţilor B2TOZ şi ARITMBIN. . . . 176

 

 

P R E F A T A

 

            Deşi tehnologia construcţiei calculatoarelor a evoluat fantastic de mult, mai ales īn ultimii 10-15 ani, principiile fundamentale după caresunt construite sunt aceleaşi ca şi acum 40 de ani. Funcţionarea unui calculator, cu toată complexitatea lui,are ca suport matematic o serie de concepte aritmetice şi algebrice simple: bazele de numeraţie, cele patru operaţii īn aceste baze, noţiunea de funcţie, elemente de calculul propoziţiilor etc. Suportul electronic al unui calculator are la bază materializarea fizică a cifrelor binare 0 şi 1, iar la nivelul imediat superior are la bază circuitele poartă, cele care materializează fizic operaţiile SI, SAU, NU şi SUMA modulo 2, cunoscute din calculul propoziţiilor.

            Lucrarea de faţă are ca scop principal fundamentarea matematică a tehnologiei de construcţie a calculatoarelor, deci prezentarea modului īn care sunt combinate suportul matematic şi cel electronic īn vederea implementării principalelor funcţiuni ale unui sistem de calcul. In acest scop se prezintă "drumul" parcurs de cercetarea ştiinţifică de a direcţiona şi dezvolta unele concepte şi tehnici proprii aritmeticii, spre a putea fi implementate şi realizate fizic cāt mai eficient. Această eficienţă este urmărită numai la nivel conceptual! Deci faptul că circuitele sunt realizate cu relee ca acum 50 de ani, cu tuburi electronice ca acum 40 de ani, cu tranzistori ca acum 25 de ani sa cu circuite integrate pe scară foarte largă cum sunt realizate īn prezent, nu face decāt să crească īn mod spectaculos viteza sau capacitatea componentei electronice respective, prelucrarea informaţiei rămānānd īn esenţă aceeaşi.

 

            Capitolul 0 prezintă o serie de rezultate clasice din aritmetică şi calculul propoziţiilor ce vor fi folosite īn capitolele următoare. Tot aici este prezentată structura şi funcţiile unui sistem de calcul, pe de o parte ca un sistem matematic formal, iar pe de altă parte īntr-o abordare intuitivă descriindu-se principalele lui componente.

 

            Capitolul 1 abordează problematica bazelor de numeraţie: reprezentarea numerelor īntr-o anumită bază şi conversii īntre diverse baze. Este pus un accent deosebit pe bazele 2, 8 şi 16, ca baze de largă utilizare īn informatică. Capitolul 2 este dedicat bazelor mari de numeraţie, care au multiple aplicaţii acolo unde sunt necesare efectuarea unor calcule cu precizie foarte mare, de ordinul a sute sau mii de cifre semnificative. Sunt prezentate īn acest scop o serie de consideraţii asupra algoritmilor de efectuare a celor patru operaţii īn astfel de baze. Toată lumea ştie, īncă din clasa I-a primară, să efectueze, cifră cu cifră, operaţia de īmpărţire. Oare cāţi programatori de calculatoare au reuşit să scrie un program care să implementesze acelaşi algoritm?

 

            Capitolul 3 se ocupă de codificarea şi reprezentarea informaţiei īn calculator. Sunt prezentate cele mai actuale principii de reprezentare a caracterelor şi a numerelor. Capitolul 4 este destinat īn mod special reprezentării numerelor īntregi. Aici sunt descrise funcţiile de reprezentare binară a numerelor īntregi, precum şi algoritmii specifici folosiţi īn construcţia calculatoarelor pentru efectuarea celor patru operaţii. Cunoaşterea modurilor de reprezentare a informaţiei īn calculator este esenţială pentru orice programator. Mulţi dintre aceştia au īntālnit situaţii īn care au fost nevoiţi să "vāneze" săptămāni sau chiar luni o eroare īntr-un program. De foarte multe ori cauza ei a fost necunoaşterea corectă a reprezentării datelor. Stiind modurile de reprezentare a datelor, se pot face evaluări asupra nivelului de propagare a erorilor de trunchiere şi rotunire ce apar la calculele cu numere reale.

 

            Capitolul 5 prezintă cāteva metode de codificare a informaţiei prin care să se asigure detectarea posibilelor alterări de informaţii īn timpul prelucrărilor. Deoarece problematica codurilor detectoare şi corectoare de erori este deosebit de vastă, aici sunt prezentate doar tehnicile folosite cel mai frecvent īn construcţia calculatoarelor.

 

            Capitolul 6 "Circuite combinaţionale" abordează problematica realizării fizice a principalelor funcţiuni a unităţii aritmetice a unui calculator, folosind cirfcuitele poartă. Se prezintă sumatorul binar, circuite de paritate, circuite selectoare, circuite multiplexoare etc.

 

            Capitolul 7 modelează funcţionarea procesorului unui calculator. In acest scop se foloseşte mecanismul clasic al maşinilor cu trei şi cu o adresă. Maşina cu o adresă este astfel concepută īncāt funcţionează, principial, la fel ca cel mai performant microprocesor. Simplitatea acestor modele, care lasă la o parte toate detaliile tehnice nerelevante, permite o prezentare simplă şi accesibilă a funcţionării procesorului.

 

            Anexele conţin texte sursă Pascal ce implementează o aritmetică ce lucrează pānă la baza 35, folosind pānă la 250 de cifre. De asemenea, sunt prezentate programe care simulează algoritmii de aritmetică binară prezentaţi īn lucrare.

 

            Lucrarea se adresează īn primul rānd studenţilor atāt celor informaticieni, cāt şi tuturor celor care au, īntr-un fel sau altul, contact cu informatica şi cu calculatoarele. Pentru specialiştii deja formaţi, īn primul rānd pentru programatori, ea se constituie īntr-un bun ghid īn problematica abordată. Prin nivelul matematic de la care se pleacă ea este accesibilă īntr-o mare măsură şi elevilor din liceele de matematică - fizică, precum şi a celor din clasele speciale de informatică.