ii 1 2 intro aritmetica

65
INTRODUCERE IN INFORMATICA [email protected] EF 202

Upload: crazylady

Post on 25-Jun-2015

179 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: II 1 2 Intro Aritmetica

INTRODUCERE IN INFORMATICA

[email protected]

EF 202

Page 2: II 1 2 Intro Aritmetica

Continut1 Generalitati despre calculatoarele electronice

1.1 Structura si functionarea unui calculator electronic1.2 Istoric

2 Bazele aritmetice ale calculatoarelor electronice 2.1 Sisteme de numeratie 2.2 Reprezentarea numerelor in virgula fixa 2.3 Adunarea si scaderea in virgula fixa 2.4 Inmultirea in virgula fixa 2.5 Impartirea in virgula fixa 2.6 Reprezentarea numerelor in virgula mobila 2.7 Metode eficiente de impartire 2.8 Alte coduri numerice

3 Bazele logice ale calculatoarelor3.1 Algebra de comutatie3.2 Circuite logice combinationale3.3 Circuite logice secventiale

4 Unitatile functionale ale unui calculator4.1 Modelul functional al calculatorului 4.2 Unitatea aritmetica – logica 4.3 Memoria 4.4 Unitatea de comanda 4.5 Subsistemul de intrare / iesire

5 Organizarea unui PC

Page 3: II 1 2 Intro Aritmetica

Bibliografie

F. Iacob – Introducere in informatica, Editura Printech, 2004. A. Tanenbaum – Organizarea structurata a calculatoarelor, Ed. Agora, 1999.

Page 4: II 1 2 Intro Aritmetica

Modul de notare:

Laborator: 40 puncteLucrare verificare 1: 40 puncteLucrare verificare 2: 20 puncte

Page 5: II 1 2 Intro Aritmetica

1 GENERALITATI DESPRE CALCULATOARELE

ELECTRONICE

Page 6: II 1 2 Intro Aritmetica

1.1 Structura si functionarea unui calculator electronic

John von Neumann, iunie 1945, “Prima schita de raport asupra EDVAC”:

Page 7: II 1 2 Intro Aritmetica

1.2 Istoric

500 i.H., China antica: abacul;

1617, John Napier: dispozitiv ~ rigla de calcul;

1642, fizicianul francez Blaise Pascal: masina de adunat;

1671, Gottfried Wilhelm von Leibniz: prima masina mecanica pentru operatia de inmultire;

1823, profesorul Charles Babbage, Universitatea din Cambridge: masina diferentiala (tabelele de logaritmi) - cartele perforate

Page 8: II 1 2 Intro Aritmetica

Calculatoare electronice.

1943, guvernul britanic: primul calculator electronic Colossus (decodificarea mesajelor germane);

7 august 1944, Howard Aiken (Universitatea Harvard) + IBM (International Business Machines) + Bell Telephone: Mark I (calculator electro-mecanic pentru calculul traiectoriilor balistice).

Page 9: II 1 2 Intro Aritmetica

Dezvoltarea tehnicii de calcul in Romania.

1957 dr.ing. Victor Toma, CIFA 1 (Calculator al Institutului de Fizica Atomica), cu tuburi electronice.

1961 MECIPT 1 (Masina Electronica de Calcul Institutul Politehnic Timisoara) cu tuburi electronice MECIPT 2 si 3, cu tranzistoare.

1966 DACICC 1 (Cluj).

Page 10: II 1 2 Intro Aritmetica

Bazele industrie de calculatoare: 1970 Fabrica de Calculatoare Bucuresti Felix C256 (licenta franceza).

Page 11: II 1 2 Intro Aritmetica

-FELIX M18, M18B, M118, cu microprocesor Intel 8080 la 2 MHz, 64 Kocteti de memorie interna, display grafic de 512x256 pixeli (numai la M118), unitati de disc flexibil de 8”, sistem de operare CP/M si SFDX-18;

Page 12: II 1 2 Intro Aritmetica

-FELIX M216, sistem biprocesor cu 8086 si 8080, memorie RAM de 128 Kocteti, extensibila pana la 1 Moctet, display grafic color de 512x512 pixeli;

Page 13: II 1 2 Intro Aritmetica

-FELIX PC, realizat cu microprocesor Intel 8086 (8088), coprocesor matematic 8087, memorie RAM de 256 Kocteti, extensibila la 640 Kocteti pe placa de baza, unitati de disc flexibil de 5¼”, sistem de operare MS-DOS;

Page 14: II 1 2 Intro Aritmetica

-HC-85, destinat utilizarii acasa sau in scoli, cu microprocesor Zilog Z80, 64 Kocteti de RAM, interfata cu unitate de caseta magnetica audio (casetofon audio), afisare pe televizor si interpretor BASIC;

Page 15: II 1 2 Intro Aritmetica

2 BAZELE ARITMETICE ALE CALCULATOARELOR ELECTRONICE

Page 16: II 1 2 Intro Aritmetica

2.1 Sisteme de numeratie

Sistem de numeratie: totalitatea regulilor de reprezentare a numerelor cu ajutorul unor simboluri numite cifre.

Cifra: simbol care reprezinta o cantitate intreaga.

Baza (radacina) sistemului de numeratie: numarul de simboluri permise pentru reprezentarea cifrei.

=> bazele 2, 8, 10 si 16

Page 17: II 1 2 Intro Aritmetica

b=10 b=2 b=8 b=160 0 0 01 1 1 12 10 2 23 11 3 34 100 4 45 101 5 56 110 6 67 111 7 78 1000 10 89 1001 11 910 1010 12 A11 1011 13 B12 1100 14 C13 1101 15 D14 1110 16 E15 1111 17 F16 10000 20 1017 10001 21 1118 10010 22 1219 10011 23 1320 10100 24 1421 10101 25 15... ... ... ...

Page 18: II 1 2 Intro Aritmetica

Schimbarea bazei de numeratie

separat pentru partea intreaga si separat pentru partea subunitara!

N numar intreg fara semn in baza x noua baza y.

Page 19: II 1 2 Intro Aritmetica

Reprezentarea N in baza y: anan-1 ... a1a0

N = anyn + an-1y

n-1 + ... + a1y + a0

=> impartiri succesive la noua baza y, retinand la fiecare operatie restul!

N / y = anyn-1 + an-1y

n-2 + ... + a1 + a0/y

=> a0 (cifra cea mai putin semnificativa a rezultatului)

N1 / y = anyn-2 + an-1y

n-3 + ... + a2 + a1/y

……………….Nk / y = any

n-k-1 + an-1yn-k-2 + ... + ak+1 + ak/y

Conversia se incheie cand se obtine catul 0.

Page 20: II 1 2 Intro Aritmetica

Exemplu. N = 41(10) noua baza 2.

41 : 2 => cat =20 si rest = 1 => a0 = 120 : 2 => cat =10 si rest = 0 => a1 = 010 : 2 => cat = 5 si rest = 0 => a2 = 0 5 : 2 => cat = 2 si rest = 1 => a3 = 1 2 : 2 => cat = 1 si rest = 0 => a4 = 0 1 : 2 => cat = 0 si rest = 1 => a5 = 1

=> N = 101001(2). Verificare:

N = 1·25 + 0·24 + 1·23 + 0·22 + 0·21 + 1·20 = 41corect!

Page 21: II 1 2 Intro Aritmetica

Aplicatie. algoritm in pseudocod pentru conversia unui numar intreg din zecimal in binar.

citeste nri = 0cat timp nr ≥ 2i executa│ a[i] = 0└ i = i + 1i = i - 1; n = i; a[n] = 1; nr = nr – 2i

cat timp nr ≠ 0 executa│ i = i – 1│ daca nr ≥ 2i atunci│ │ a[i] = 1└ └ nr = nr – 2i

scrie (a[i], i = n,0)

Page 22: II 1 2 Intro Aritmetica

N numar subunitar, fara semn in baza x noua baza y.

Reprezentarea N in baza y: 0. a-1a-2... a-m

N = a-1y-1 + a-2y

-2 + ... + a-my-m

=> inmultiri succesive cu noua baza y, retinand de fiecare data partea intreaga a rezultatului!

N·y = a-1 + a-2y-1 + a-3y

-2 + ... + a-my-m+1

=> a-1 (cea mai semnificativa)

N1·y = a-2 + a-3y-1 + a-4y

-2 + ... + a-my-m+2

…………………Nk·y = a-k-1 + a-k-2y

-1 + a-k-3y-2 + ... + a-my-m+k+1

Page 23: II 1 2 Intro Aritmetica

Conversia se incheie:-partea subunitara a rezultatului inmultirii egala cu zero ;-s-a calculat numarul propus de cifre (s-a atins precizia dorita).

Obs.conversia numerelor intregi: exact;conversia numerelor subunitare: aproximativ.

Page 24: II 1 2 Intro Aritmetica

Exemplu. N = 0.37(10) baza 2 (rezultatul pe 7 biti).

0.37 x 2 = 0.74 => a-1 = 00.74 x 2 = 1.48 => a-2 = 10.48 x 2 = 0.96 => a-3 = 00.96 x 2 = 1.92 => a-4 = 10.92 x 2 = 1.84 => a-5 = 10.84 x 2 = 1.68 => a-6 = 10.68 x 2 = 1.36 => a-7 = 1

N ≈ .0101111(2) . Verificare:

N ≈ 0·2-1+1·2-2+0·2-3+1·2-4+1·2-5+1·2-6+1·2-7 = = (0·26+1·25+0·24+1·23+1·22+1·21+1·20)/27 = = 47 / 128 = 0.367

Page 25: II 1 2 Intro Aritmetica

Exemplu. N = 41.37(10) baza 2 (partea subunitara pe 7).

=> N ≈ 101001.0101111(2).

Page 26: II 1 2 Intro Aritmetica

Aplicatie. algoritm pentru conversia unui numar subunitar din zecimal in binar, cu precizia pe m biti.

citeste nr, mpentru i=1,m executa└ a[i] = 0i = 0cat timp (nr ≠ 0)si(i < m) executa│ i = i + 1│ daca nr ≥ 2-i atunci│ │ a[i] = 1└ └ nr = nr – 2-i

scrie (a[i], i = 1,m)

Page 27: II 1 2 Intro Aritmetica

Cazuri particulare

1)x = yn => fiecare cifra in baza x ~ grup de n cifre in baza y.

Exemplu. N = 3CF.4AE(16) baza 2

16 = 24 => n = 4

3 C F . 4 A E ↓ ↓ ↓ ↓ ↓ ↓ 0011 1100 1111 . 0100 1010 1110

=> N = 1111001111.01001010111(2).

Conversia s-a facut exact !

Page 28: II 1 2 Intro Aritmetica

2) xn = y.

-in vechea baza x => grupuri de cate n cifre de la punctul zecimal spre stanga pentru partea intreaga si de la punctul zecimal spre dreapta pentru partea subunitara (daca este necesar se vor completa grupurile extreme cu zerouri);

-fiecare grup cifra in noua baza y.

Rezultatul este exact!

Exemplu. N = 11001111.1101011(2) in baza 8.

23 = 8 => n = 3.

011 001 111 . 110 101 100 ↓ ↓ ↓ ↓ ↓ ↓ 3 1 7 . 6 5 4=> N = 317.654(8)

Page 29: II 1 2 Intro Aritmetica

2.2 Reprezentarea numerelor in virgula fixa

Numerele: in virgula fixa (numere intregi sau numere subunitare) si in virgula mobila (numere reale).

Valoarea in zecimal:

2

0

1

2

0

2

2

n

k

nkk

n

k

kk

subunitarnumarpentrux

intregnumarpentrux

x

Page 30: II 1 2 Intro Aritmetica

Exemple. Sa se reprezinte numerele x = 21 si y = -20 pe 6 biti.

[x] = 010101[y] = 110100

Page 31: II 1 2 Intro Aritmetica

2.3 Adunarea si scaderea in virgula fixa

Adunarea si scaderea

operatia x op y = z (op operatia de realizat, 0 pentru adunare si 1 pentru scadere).

Operatia finala:

Doua cazuri:

Page 32: II 1 2 Intro Aritmetica

Exemplu. x-y=z, unde x = 11, y = -14, pe 6 biti.

[x] = 001011[y] = 101110

=> zs=xs=0

|x|+ 01011+|y| 01110─── => ─────|z| 11001

deci, s-a obtinut [z] = 011001 (z = 25).

1) opfin = 0 => aduna modulele celor doi operanzi, iar semnul rezultatului este dat de semnul primului operand.

Page 33: II 1 2 Intro Aritmetica

Exemplu. x+y=z, unde x = -29, y = 17.

[x] = 111101[y] = 010001

|x|>|y| => zs=xs=1

|x|- 11101-|y| 10001─── => ─────|z| 01100

=> [z] = 101100 (z = -12 ).

2) opfin = 1 => se scade modulul mai mic din modulul mai mare, iar semnul rezultatului este dat de semnul operandului mai mare in modul. Exceptie: op = 1 (scadere) si |y|>|x|

Page 34: II 1 2 Intro Aritmetica

2.4 Inmultirea in virgula fixa

x• y = zEtape:

1) Determinarea semnului rezultatului:

sss yxz

Page 35: II 1 2 Intro Aritmetica

2

0

2

0

22n

k

kk

n

k

kk yxyxyx

12

002

kk

kkk ydacax

ydacayx

2) Calcularea modulului rezultatului:

a) Numere intregi.

|x|2k ~ |x| deplasat spre stanga k pozitii.

Page 36: II 1 2 Intro Aritmetica

1

1

1

1

22n

k

kk

n

k

kk yxyxyx

12

002

kk

kkk ydacax

ydacayx

b) Numere subunitare.

|x|2-k ~ |x| deplasat spre dreapta k pozitii.

3) Trunchierea si rotunjirea rezultatului.

Page 37: II 1 2 Intro Aritmetica

Exemplu: x • y = z in virgula fixa, x =20/32 si y = -19/32.

[x] = 0.10100[y] = 1.10011

Etape:

1) Semnul rezultatului:

110 sss yxz

Page 38: II 1 2 Intro Aritmetica

2) Modulul rezultatului:|z| = |x| • |y|

.10100•

.10011 ───────────

.0000010100+ |x|•y-5•2-5=|x|•2-5

.0000101000 |x|•y-4•2-4=|x|•2-4

.0000000000 |x|•y-3•2-3=0

.0000000000 |x|•y-2•2-2=0

.0101000000 |x|•y-1•2-1=|x|•2-1

─────────── .0101111100

Page 39: II 1 2 Intro Aritmetica

Rezultat exact!

=> [z] = 1.0101111100

z = - (0•2-1+1•2-2+0•2-3+1•2-4+1•2-5+1•2-6+1•2-7+1•2-8+0•2-9+0•2-10 ) = = - (0•29+1•28+0•27+1•26+1•25+1•24+1•23+1•22+0•21+0•20)/210 = = - (256+64+32+16+8+4)/1024 = - 380/1024

(corect !)

Page 40: II 1 2 Intro Aritmetica

3) Trunchiere si rotunjire:

.01011 11100 ↓.01011+ 1

───────.01100

Rezultatul aproximativ [z] = 1.01100 => z = -12/32 (s-a obtinut rezultatul -0.375, fata de cel exact 0.37109375).

Page 41: II 1 2 Intro Aritmetica

2.5 Impartirea in virgula fixa

Metoda comparatiei

Se trateaza separat semnele si separat modulele operanzilor.Conditie: deimpartitul < impartitorul.x : y => catul q si restul r.

(cei n-1 biti ai modulului fiecarui operand se noteaza cu indici negativi –1, –2, –3, ... –m (m = n–1), pentru ai pune in corespondenta cu puterile negative ale bazei 2 reprezentand ponderile).

Algoritmul:

Page 42: II 1 2 Intro Aritmetica

citeste x,ydaca |x| ≥ |y| atunci│ scrie „Eroare!”altfel│ qs = xs ys│ rs = xs

│ |r| =|x| //initializare rest partial│ pentru i=1,m executa│ │ |r| = |r|•2 //deplaseaza o pozitie stanga│ │ daca |r| ≥ |y| atunci│ │ │ q-i = 1 //bitul curent al catului│ │ │ |r| = |r| - |y|│ │ altfel│ │ │ q-i = 0 //bitul curent al catului └ └ └ |r| = |r||r| = |r|•2-m //rest finalscrie q, r

Page 43: II 1 2 Intro Aritmetica

Corectie: restul x 2-m. Justificare (r(k) restul partial la pasul k):

|r(0)| = |x||r(1)| = 2•|r(0)| - q-1•|y||r(2)| = 2•|r(1)| - q-2•|y|........|r(m)| = 2•|r(m-1)| - q-m•|y|

unde

altfel

yrdacaq

k

k0

21 )1(

Page 44: II 1 2 Intro Aritmetica

In ultima relatie de mai sus se inmultesc ambii membri cu 2-m, inlocuindu-se succesiv fiecare r(k) din relatia precedenta in functie de r(k-1).

2-m•|r(m)|= =-2-m•q-m•|y|+2

-m•2•(2•...•(2•|x|-q-1•|y|)...-q-m+1•|y|)= =2-m•2m•|x|-|y|•(q-1•2

-1+q-2•2-2+...+q-m•2

-m)= =|x|-|y|•|q|

=> |x| = |y|•|q| + 2-m•|r(m)|

rest corect 2-m•|r(m)|.

Page 45: II 1 2 Intro Aritmetica

Exemplu. x : y, x = 20/32 si y = 25/32.

[x] = 0.10100[y] = 0.11001

Impartirea se executa in cinci (n-1) pasi (1,2,...5):

Page 46: II 1 2 Intro Aritmetica

Pas |y| |r(k)| q───────────────────────────────────────────────0 .11001 .10100 |r(0)|<|y| => OK!───────────────────────────────────────────────1 .11001 1.01000- |r(1)|≥|y| => q-1=1 .11001 ──────── .01111───────────────────────────────────────────────2 .11001 .11110- |r(2)|≥|y| => q-2=1 .11001 ──────── .00101───────────────────────────────────────────────3 .11001 .01010 |r(3)|<|y| => q-3=0───────────────────────────────────────────────4 .11001 .10100 |r(4)|<|y| => q-4=0───────────────────────────────────────────────5 .11001 1.01000- |r(5)|≥|y| => q-5=1 .11001 ──────── .01111

Page 47: II 1 2 Intro Aritmetica

=>

[q] = 0.11001 (q = 25/32) si [r] = 0.0000001111 (r = 15/1024).

Verificare: x = q • y + r (20/32 = 25/32 • 25/32 + 15/1024).

Page 48: II 1 2 Intro Aritmetica

2.6 Reprezentarea numerelor in virgula mobila

-s bitul de semn al numarului (s=0 numar pozitiv si s=1 numar negativ);-m mantisa numarului (cifrele semnificative);-e exponentul (puterea la care trebuie ridicata o valoare numita baza si care inmulteste cifrele semnificative ale numarului).

valoare = (-1)s • m • bazae

(baza: 2, 10 sau 16).

Page 49: II 1 2 Intro Aritmetica

Mantisa:1/baza ≤ m < 1 (baza 2 => ½ ≤ m < 1 ~ primul bit, c.m.s. este 1).

Exponentul:caracteristica = exponent + 2numar de biti exponent – 1

Page 50: II 1 2 Intro Aritmetica

Exemplu. 7 biti pentru exponent =>128 valori distincte cu semn:

-64 ≤ exponent ≤ +63

caracteristica = exponent + 27-1

caracteristica = exponent + 64 => 0 ≤ caracteristica ≤ 127

Page 51: II 1 2 Intro Aritmetica

Exemplu. Standardul IEEE 754 (IEEE – „Institute of Electrical and Electronics Engineers”) pentru reprezentarea numerelor reale in virgula mobila pe lungime (precizie) simpla (32 de biti):

daca 0 < e < 255 => valoarea = (-1)s • 1.m • 2e-127

daca e = 0 si m = 0 => valoarea = 0daca e = 0, m ≠ 0 sau e = 255 => eroare

Page 52: II 1 2 Intro Aritmetica

Reprezentarea pe lungime (precizie) dubla (64 de biti):

daca 0 < e < 2047 => valoarea = (-1)s • 1.m • 2e-1023

daca e = 0 si m = 0 => valoarea = 0daca e = 0, m ≠ 0 sau e = 2047 => eroare

Page 53: II 1 2 Intro Aritmetica

2.7 Metode eficiente de impartire

Metoda inversarii impartitorului

ecuatia f(x)=0 metoda iterativa Newton-Raphson: daca functia f este continua si derivabila pe un interval care include radacina cautata, aceasta poate fi gasita utilizand relatia de recurenta (pornind de la o valoare initiala x0 bine

aleasa):

)(

)(1

i

iii xf

xfxx

Page 54: II 1 2 Intro Aritmetica

wx

xf 1

)(

2

1)(

xxf

)2(/1

/121 iii

iii xwx

x

wxxx

Daca se alege functia:

cu radacina 1/w,

iar relatia de recurenta devine:

relatie utilizata pentru a calcula pe 1/w => A:B A•(1/B) (aflarea lui 1/B prin metoda iterativa de mai sus).

-resurse rapide pentru operatiile de inmultire si scadere;-exemplu de circuit: Advanced Micro Devices AM29C325.

Page 55: II 1 2 Intro Aritmetica

....

....

3210

3210

ffffI

ffffD

I

DQ

Metoda factorilor succesivi

-pentru calcularea catului mantiselor (Q=D:I) de la impartirea in virgula mobila;

-rezultatul impartirii ~ inmultiri succesive atat la numarator cat si la numitor cu o serie de factori bine alesi f0, f1,..., fk,

astfel incat numitorul fractiei 1 => rezultatul impartirii = numaratorul fractiei.

Se noteaza I=1-x (x este subunitar caci I este subunitar).

Page 56: II 1 2 Intro Aritmetica

Rezulta:

f0 = 1 + x = 1 + ( 1 – I ) = 2 – I

I • f0 = ( 1 – x) • ( 1 + x ) = 1 – x2

(care este mai aproape de 1 decat I, iar f0 este complementul fata de 2 al

lui I).

f1 = 1 + x2 = 1 + ( 1 – I • f0 ) = 2 – I • f0

I • f0 • f1 = ( 1 – x2) • ( 1 + x2 ) = 1 – x4

care este mai aproape de 1 decat I • f0, iar f1 este complementul fata de 2 al

lui I • f0....

fiecare fk se obtine din complementul fata de 2 al valorii curente a

numitorului.

-numar fix de pasi;-convergenta mai buna f0 = valoare modificata (memorie ROM).

Page 57: II 1 2 Intro Aritmetica

Schema bloc:

(*) unitate rapida de inmultire;(c’2) unitate de complementare fata de 2.

Page 58: II 1 2 Intro Aritmetica

cifra BCD0 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001

2.8 Alte coduri numerice

Codul BCD

BCD (”Binary Coded Decimal”) sau ZCB (zecimal codificat binar)

Page 59: II 1 2 Intro Aritmetica

In continuare va fi discutata pe scurt conversia din binar in BCD. Algoritmul de conversie rezulta din echivalenta dintre o deplasare la stanga a unei valori binare si inmultirea cu 2. Astfel, se considera doua grupuri de biti, corespunzatoare la doua registre in cazul unei implementari hardware: grupul binar si grupul BCD (impartit in decade de cate 4 biti corespunzatoare cifrelor zecimale). Se initializeaza grupul binar cu valoarea binara de convertit, iar grupul BCD cu 0. Se executa deplasari succesive cu cate o pozitie spre stanga atat in grupul binar cat si in grupul BCD, cu trecerea cate unui bit din grupul binar in grupul BCD, incepand cu bitul c.m.s. Inainte de fiecare deplasare se executa corectii in acele decade din grupul BCD care au o valoare > 4 (prin deplasare stanga, echivalent cu o inmultire cu 2, se obtine o valoare > 9, deci care nu este cifra BCD). Corectia consta din adunarea valorii 3 in fiecare decada cu valoare > 4 inainte de deplasare. Conversia se incheie in momentul in care toti bitii din grupul binar au fost transferati in grupul BCD.

Page 60: II 1 2 Intro Aritmetica
Page 61: II 1 2 Intro Aritmetica

Exemplu. Se considera numarul in binar N(2) = 111110010. Sa se converteasca in BCD prin metoda deplasarilor succesive prezentata mai sus. Grup BCD Grup binar 0000 0000 0000 111110010 0000 0000 0001 11110010 0000 0000 0011 1110010 0000 0000 0111+ 110010 11 ──── 0000 0000 1010 110010 0000 0001 0101+ 10010 11 ──── 0000 0001 1000 10010 0000 0011 0001 0010 0000 0110+0010 010 11 ──── 0000 1001+0010 010 0001 0010 0100 10 0010 0100 1001+ 0 11 ──── 0010 0100 1100 0 0100 1001 1000

S-a obtinut rezultatul 498(10) in BCD pe 3x4 biti.

Page 62: II 1 2 Intro Aritmetica

Conversia BCD - binar are la baza echivalenta dintre deplasarile succesive spre dreapta si impartirile la 2. In acest caz se initializeaza grupul BCD cu valoarea BCD de convertit, iar grupul binar cu 0. Se executa deplasari succesive spre dreapta cu o pozitie atat in grupul BCD cat si in grupul binar, efectuand corectii la acele decade in care, dupa deplasare, se obtine bitul c.m.s egal cu 1. Corectia consta in scaderea valorii 3 (echivalent cu adunarea complementului sau, 13) din fiecare decada cu valoarea ≥ 8 (care a primit prin deplasare in pozitia c.m.s un bit 1). Necesitatea corectiei rezulta din faptul ca prin deplasare la dreapta cand un bit 1 trece din pozitia c.m.p.s. a unei decade in pozitia c.m.s. a decadei inferioare alaturate, valoarea sa, relativ la decada inferioara, scade de la 10 la 8, in loc sa scada de la 10 la 5 (prin impartire la 2). Deci se executa corectia la decada inferioara in care a aparut bitul 1 in pozitia c.m.s., scazand valoarea 3 (sau adunand 13).

Page 63: II 1 2 Intro Aritmetica

Exemplu. Sa se reprezinte in BCD numarul N(10)=503 si sa se converteasca in binar prin metoda deplasarilor succesive. Grup BCD Grup binar 0101 0000 0011 000000000 0010 1000+0001 1 1101 ──── 0010 0101 0001 1 0001 0010 1000+ 11 1101 ──── 0001 0010 0101 11 0000 1001+0010 111 1101 ──── 0000 0110 0010 111 0000 0011 0001 0111 0000 0001 1000+ 10111 1101 ──── 0000 0001 0101 10111 0001 0000 1010+ 110111 1101 ──── 0000 0000 0111 110111 ....... (nu se modifica configuratia de biti) 0000 0000 0000 111110111S-a obtinut valoarea N(2) = 111110111 (503(10)).

Page 64: II 1 2 Intro Aritmetica

binar Gray0000 00000001 00010010 00110011 00100100 01100101 01110110 01010111 01001000 11001001 11011010 11111011 11101100 10101101 10111110 10011111 1000

Codul Gray

Codul Gray are proprietatea ca oricare doua valori succesive (consecutive) difera prin valoarea unui singur bit. Acest cod este util in acele aplicatii unde o eroare de un bit este acceptabila si nu modifica foarte mult valoarea numerica respectiva. In tabelul urmator se prezinta echivalenta dintre codurile binar si Gray pe 4 biti:

Page 65: II 1 2 Intro Aritmetica

Coduri nenumericeIntr-un sistem de calcul o parte a informatiei prelucrate este nenumerica.

Pentru reprezentarea acesteia se utilizeaza diferite coduri, dintre care cel mai utilizat este codul ASCII (”American Standard Code for Information Interchange”). Codul ASCII standard utilizeaza 7 biti pentru reprezentarea literelor mari si mici ale alfabetului latin, cifrelor zecimale, caracterelor speciale si a cateva caractere de control (in total 128 de caractere). Caracterele sunt grupate astfel (codurile fiind furnizate in hexazecimal):

0-1Fh : caractere de control, ca LF (0Ah), CR (0Dh), BEL (07h),...;20h-2Fh : caractere speciale, ca spatiu, !, ”, #, $,...;30h-39h : cifrele zecimale 0(30h), 1(31h),...,9(39h);3Ah-40h : caractere speciale :, ;, <, =, ...;41h-5Ah : literele mari ale alfabetului A(41h), B(42h), ..., Z(5Ah);5Bh-60h : caractere speciale [, \, ...;61h-7Ah : literele mici ale alfabetului a(61h), b(62h), ..., z(7Ah);7Bh-7Fh : caractere de control si speciale, cum sunt DEL(7Fh),

{(7Bh), }(7Dh),...Pe langa acest cod se utilizeaza si codul ASCII extins, in care

caracterele sunt reprezentate pe 8 biti (deci se reprezinta in total 256 de caractere).