Documente Academic
Documente Profesional
Documente Cultură
B10 B2:
13 2 1
6 2 0
3
1
1101
2 1
3010 = 111102
0
1
1
1
1
0,48
0,96
1,83
1,66
1,32
.....
0,4810=0,0111...2
0
1
1
1
Se observ c n cazul conversiei prii fracionare de cele mai multe ori nu se obine un
rezultat exact. Procesul de conversie se ncheie atunci cnd se obine o precizie rezonabil
de exprimare a valorii fracionare. De exemplu n multe aplicaii inginereti o precizie de 2
cifre zecimale dup virgul se consider o precizie acceptabil. ntrebarea este cte cifre
binare sunt necesare pentru o precizie similar? La exprimarea n baza zece, prin dou cifre
dup punctul zecimal se obine o eroare maxim de 1/100. n baza 2 pentru o precizie
similar trebuie s se utilizeze 7 cifre binare pentru a obine o eroare maxim de 1/128,
adic 1/27. Pentru o precizie mai mare de 1/1000 (3 cifre zecimale dup punct) sunt
necesare 10 cifre binare (1/1024 = 1/210).
Poziia punctului zecimal nu se reprezint n calculator. Prin convenie se consider ntr-o
poziie predefinit. De exemplu pentru reprezentarea numerelor strict ntregi poziia punctului
zecimal se consider n dreapta reprezentrii (dup cifra cea mai puin semnificativ). Din
aceast cauz aceast codificare poart numele de "reprezentare n virgul fixa".
Pentru operaiile de adunare i scdere poziia punctului zecimal nu influeneaz rezultatul
generat. Situaia este diferit pentru operaiile de nmulire i mprire, unde poziia punctului
n rezultat se schimb.
Pentru a face trecerea de la sistemul zecimal la cel binar i invers adesea se utilizeaz un
sistem de numeraie intermediar, care se apropie de ambele sisteme. De exemplu sistemul
hexazecimal este utilizat n acest scop deoarece, pe de-o parte permite exprimarea unor
valori printr-un numr rezonabil de cifre, iar pe de alt parte se poate converti relativ simplu
n sistemul binar. n cazul n care se vizualizeaz coninutul unei zone de memorie sau a
unor registre informaia este prezentat n format hexazecimal, chiar dac n calculator
informaia este n binar. De asemenea programatorii n limbaj de asamblare prefer forma
hexazecimal n locul celei zecimale pentru c se apropie mai mult de forma de reprezentare
din calculator.
Sistemele hexazecimal si (uneori) octal, sunt utilizate la listarea programelor, astfel incat
inginerul ce doreste proiectarea si/sau utilizarea unei asemenea masini trebuie sa fie
familiarizat cu o varietate de sisteme de numarare. Totodata, interfatarea cu utilizatorul uman
presupune adeseori preluarea de date in format zecimal, (tastaturi, console) si, dupa
prelucrare, prezentarea rezultatelor deasemenea zecimal (afisaje, listinguri, etc.). Astfel, sunt
necesare uneori operatii in cod BCD in interiorul microprocesorului, si deci sunt necesare
tehnici de conversie binar-BCD si reciproc.
Conversia binar -> octal se efectueaza prin gruparea a cate trei cifre binare, incepand din
dreapta numarului, si inlocuire cu echivalentul octal corespunzator.
2/13
Reciproc, pentru conversia octal -> binar, se procedeaza in mod similar: Se inlocuieste
fiecare cifra octala cu cei trei biti din codul binar corespunzator.
Octal
0
1
2
3
4
5
6
7
Binar
000
001
010
011
100
101
110
111
Hexazecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
Zecimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
3/13
1.1.
27
26
25
24
23
22
21
20
0
0
1
0
0
1
0
0
0
0
1
0
1
0
0
1
depasire
1.2.
4/13
B7
B6 B5
B4
B3 B2
B1 B0
octet
B15 B14 B13 B12
B11 B10
B9 B
B7
D
cuvnt
B6 B5
B4
B3 B2
B1 B0
Pentru cuvinte de date cu lungime data, plaja de valori numerice ce pot fi reprezentate difera
de cazul numerelor intregi fara bit de semn. Astfel, intr-un octet se vor putea reprezenta
numere intregi intre -128 si +127.
Domeniu de valori
[0255]
[-128127]
[065535]
[-3276832767]
+
128
127
32768
32767
5/13
2310 = 1 00101112
13010 -> valoarea absolut nu se poate reprezenta pe 7 bii => reprezentarea se poate face numai
pe un numr mai mare de bii
13010 -> 0 0000000100000102
-13010 -> 1 0000000100000102
Aceast form de reprezentare este simpl, dar nu este avantajoasa pentru implementarea
operaiilor aritmetice. Unitatea aritmetic trebuie s in cont de semnul operanzilor.
Practic in totalitatea cazurilor se utilizeaza reprezentarea numerelor cu semn in forma
complementara, ceea ce favorizeaza in mod decisiv implementarea hardware a operatiilor
aritmetice cu aceste numere. Exista doua tipuri de reprezentare:
[ X ]2 = 2 n X
Astfel, prin reprezentarea complementului fata de doi al unui numar, se obtine reprezentarea
binara a opusului acestui numar (deci [X]2 = - X).
Observatie: In cazul acestei reprezentari numarul x adunat cu x trebuie sa dea totdeauna 0.
Exemplu, fie X = 610 = 01102, n=4.
Calculand complementul fata de doi al acestui numar, se obtine reprezentarea pentru
-X = -610, data de
6/13
X = 0110
1001
X inversat va fi :
se aduna 1:
[X ]2 =
Re zultat :
1010
(b) se lasa neschimbate cifrele din numar pana la primul 1, inclusiv (de la dreapta la stanga),
inversandu-se celelalte cifre.
[ X ]2 = 1 0 1 0
X =0 1 1 0
___________ _______________
se inverseaza
raman nemodificate
Exemple:
|-2210| -> 00010110
-2210 -> 11101001+ C1
1
-2210 -> 11101010 C2
De remarcat ca plaja valorilor astfel reprezentabile (pe un octet de la -128 la +127) este
nesimetrica.
Reprezentarea n complement fa de 2 este avantajoas deoarece simplific modul de
calcul al operaiilor aritmetice. La operaiile de adunare i scdere unitatea aritmetic nu
trebuie s in cont de semnul operanzilor, rezultatul generat fiind corect indiferent de semn.
Mai mult rezultatul este corect i n cazul n care se consider c reprezentrile sunt numere
strict pozitive. Pe baza acestei observaii se poate utiliza aceeai unitate de adunare/scdere
att pentru numere pozitive ct i pentru numere cu semn.
Exemplu:
Numere cu semn
-64+
16
-48
11000000+
00010000
11010000 ->208
00110000 -> 48
Numere fr semn
192+
16
208
7/13
Reprezentare C2 pe 16 bii
1111 1111 1111 1011
0000 0000 0000 0000
0000 0000 0000 0101
Reprez. pe 3 biti
011
010
001
000
-1
111
-2
Valoare zecimal
Reprezentare pe 16 biti
32767
0111111 = 7FFF16
32766
0111110 = 7FFE16
0000001 = 000116
0000000 = 000016
-1
1111111 = FFFF16
110
-3
101
-32766
1000010 = 800216
-4
100
-32767
-32768=-2
1000001 = 800116
16
1000000 = 800016
2. Considerm o reprezentare pe 16 biti. Reprezentrile pentru x = -72 prin cele trei metode se
obin dup cum urmeaz: 7210 = 10010002 =10010002
1) Semn i valoare absolut
b15
1
b0
0 0 0
1
0 0 0 0
0
0 1 0 0
4
1 0 0
8
1048H
FFB7H
FFB8H
2) Complement fa de 1
b15
1
b0
1
F
1 1 1
1
F
1 1 1
0 1 1 0 1 1
B
7
3) Complement fa de 2
b15
1
b0
1
F
1 1 1
1
F
1 1 1
0 1 1 1 0 0
B
8
8/13
1.3.
Aceast form de codificare se utilizeaz pentru reprezentarea unor valori foarte mari, foarte
mici sau dac numerele au o parte fracionar. n aceast reprezentare se folosesc 3
cmpuri:
Pentru reprezentarea n virgul flotant numrul este adus la o form normalizat (standard)
n care exist o parte strict subunitar (mantisa) care se nmulete cu o putere a lui 2
(exponentul). La mantis prima cifr de dup virgul este strict diferit de 0. Pentru a evita
operarea cu exponeni pozitivi i negativi se adaug la exponent jumtate din valoarea
maxim ce se poate exprima pe numrul de bii alocai pentru exponent. Astfel se obine
caracteristica, un numr strict pozitiv. De exemplu dac se aloc 8 bii pentru exponent
atunci la valoarea exponentului, care poate fi n intervalul (-128, +127), se va aduga
valoarea 128.
S
Caracteristica
Mantisa
Bitul de semn S
9/13
1000
0011
caract.
00011001100110011001
100
mantis
41 8C CC CDH.
1.4.
Coduri zecimale
Pentru anumite aplicaii este important ca datele numerice s se pstreze n form zecimal.
n acest fel pot fi evitate conversiile repetate din zecimal n binar i invers. O posibilitate este
utilizarea a 4 bii pentru a reprezenta cele 10 cifre zecimale (0, 1, ... 9). Reprezentarea
poart numele de codul BCD Binary Coded Decimal. Acest cod este asemntor cu
reprezentarea hexazecimal cu diferena c se utilizeaz numai primele 10 combinaii de bii:
010 -> 00002, 110 -> 00012, 210 -> 00102, ..... 910 -> 10012 ; celelalte combinaii sunt
nepermise (ex. 1010, ... 1111)
Daca se utilizeaza frecvent numerele in reprezentare zecimala - si corespunzator BCD, la
citirea/scrierea numerelor dinspre / spre exteriorul sistemului, implementarea operatiilor
aritmetice cu numere in reprezentare BCD nu este usor de realizat. Complicatiile pe care le
presupune implementarea acestor operatii conduc de obicei la preferarea urmatoarei
scheme de lucru: reprezentare BCD => reprezentare binara propriu-zisa => calcule
=>conversie in reprezentarea BCD a rezultatului.
Procesoarele Intel au instruciuni n limbaj de asamblare care suport operaii aritmetice n
reprezentarea BCD. Codurile cifrelor zecimale se pstreaz fie individual pe cte un octet
(forma despachetat), fie cte 2 cifre pe un octet (forma mpachetat).
10/13
Exemplu:
Numrul 3912D se va reprezenta n BCD
mpachetat: 39 12H deci pe 2 octei;
despachetat 03 09 01 02H deci pe 4 octei.
1.4.1.1.
Exemplu:
; Adunare n BCD despachetat
MOV AX,8
; ncrcare ax
MOV BX,5
; ncrcare bx
ADD AL, BL
; adunare
AAA
; corecie zecimal
; la adunare
; se poziioneaz AF i CF
; Scdere n BCD despachetat
MOV AX, 0103H
; ncrcare ax
MOV BX, 4
; ncrcare bx
11/13
0008H
0005H
000dH
AX=0103H
0103H
0004H
SUB AL, BL
AAS
; scdere
; corecie zecimal
; la scdere
; se poziioneaz AF i CF
; nmulire n BCD despachetat
MOV AX, 0903H
; ncrcare ax
MUL AH
; nmulire fr semn
AAM
; corecie zecimal dup nmulire
; mprire n BCD despachetat
MOV AX, 0209H
; ncrcare n ax
MOV BL, 2
; ncrcare bl
AAD
; corecie zecimal nainte
; de mprire
DIV BL
; mprire fr semn
; ctul n al
; restul n ah
AAM
; corecie zecimal dup
; mprire a ctului
; restul s-a pierdut
01feH
AX=0009H
0903H
001bH
AX=0207H
0209H
02H
AX=0019H
010cH
0cH
01H
AX=0102H
Se observ pierderea restului. Dac avem nevoie de el, restul trebuie salvat n alt
registru nainte de a efectua corecia ctului. Este posibil i corecia restului. Pentru aceasta
el trebuie transferat n AL.
1.4.1.2.
Exemplu:
; Adunarea n BCD mpachetat
MOV AX, 9933H
; ncrcare ax
ADD AL, AH
; adunare la al
DAA
; corecie zecimal
; dup adunare
; se poziioneaz CF
; Scderea n BCD mpachetat
MOV AX, 3883H
; ncrcare ax
SUB AL, AH
; scdere
DAS
; corecie zecimal
; dup scdere
; indicatorul CF este 0
12/13
9933H
AL=ccH
AL=32H
3883H
AL=4bH
AL=45H
2. Coduri alfanumerice
Multimea informatiilor primare, in cazul cazul acestor coduri, este formata din cifre, litere,
semne ortogafice, comenzi speciale, denumite in general caractere.
Codificarea este datelor alfanumerice este necesara pentru vehicularea diferitelor mesaje.
Trebuie codificate minim 88 caractere distincte (2x6 litere, 10 ciftrem 26 de caractere
speciale), deci sunt necesari minimum 7 biti.
Cel mai raspandit cod alfanumeric este codul ASCII (American Standard Code for
Information Interchange). Codul ASCII codifica 128 de caracere (cele 52 de liere, majuscule
si minuscule, ale alfabetului englez, cele 10 cifre zecimale, caractere speciale si caractere de
comanda). Datorita succesiunii caracterelor majuscule si minuscule, poate fi utilizat pentru
ordonari alfabetice.
Exemplu:
Caracterul ? in ASCII are codul 3F.
3. Aplicatii
1. S se converteasc urmtoarele din baza 2 n baza 10 i 16:
1111.0000.1111, 101.111011,
110011.11
real reprezentat.
6. S se citeasca dou numere ntregi a,b de la tastatura. S se adune numerele a+b i
s se afieze rezultatul n variabila c. Se vor afia cele trei numere.
Se va rula programul in modul de lucru pas cu pas, se vor vizualiza varabilele
programului i registrele CPU, (modul de lucru pas cu pas este necesar in vederea
depanarii pogramului).
Observatie: In meniul principal al mediului de programare Borland C:
-
Debug
13/13