Ch02 poca r

40
2-1 Reprezentarea datelor Arhitectura Sistemelor de Calcul Arhitectura calculatoarelor Reprezentarea datelor Conţinuturi 1. Introducere 2. Reprezentarea numerelor în virgulă fixă 3. Reprezentarea numerelor în virgulă mobilă 4. Studiu de caz: Eşecul rachetelor Patriot datorat pierderii preciziei 5. Coduri de caractere

description

gfasd

Transcript of Ch02 poca r

Page 1: Ch02 poca r

2-1 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Arhitectura calculatoarelor

Reprezentarea datelor

Conţinuturi1. Introducere

2. Reprezentarea numerelor în virgulă fixă

3. Reprezentarea numerelor în virgulă mobilă

4. Studiu de caz: Eşecul rachetelor Patriot datorat pierderii preciziei

5. Coduri de caractere

Page 2: Ch02 poca r

2-2 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Numere cu virgulă fixă

• Folosind doar două cifre pentru precizia numerelor cu semn în baza 10, intervalul de valori ce pot fi reprezentate este [-99, +99] iar precizia (distanţa dintre două numere succesive) este 1.

• Eroarea maximă, adică diferenţa dintre valoarea unui număr real şi cel mai apropiat întreg este jumătatea din precizie. Pentru cazul nostru, eroarea este ½ x 1 = 0.5.

• Dacă alegem a = 70, b = 40 şi c = -30, atunci a + (b + c) = 80 (ceea ce este corect) dar (a + b) + c = ?

Răspuns: -20 ceea ce nu este corect. Problema este că (a + b) este +110, ceea ce depăşeşte +99, aşa că se reţin doar cele două cifre din parte dreaptă (+10) pentru rezultatul intermediar. Aceasta este o problemă de care trebuie să ţinem cont când folosim o reprezentare finită pentru numerele reale.

Page 3: Ch02 poca r

2-3 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Cod cu ponderi ale poziţiei• Baza unui sistem de numeraţie defineşte intervalul de valori posibile pentru cifre: 0 – 9 pentru baza 10; 0,1 pentru baza 2.

• Formula generală pentru determinarea valorii zecimale a unui număr este:

Exemplu:

541.2510 = 5 102 + 4 101 + 1 100 + 2 10-1 + 5 10-2

= (500)10 + (40)10 + (1)10 + (2/10)10 + (5/100)10

= (541.25)10

Page 4: Ch02 poca r

2-4 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Conversii de baze cu metoda restului

•Exemplu: Conversia lui 23.37510 în baza 2. Prima dată se converteşte partea întreagă:

Page 5: Ch02 poca r

2-5 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Conversii de baze cu metoda înmulţirii

• Conversia părţii fracţionare:

•Rezultatul, 23.37510 = 10111.0112

Page 6: Ch02 poca r

2-6 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Fracţii în baza 2 periodice

• Nu putem converti întotdeauna o fracţie neperiodică din baza 10 într-o fracţie periodică în baza 2 (sau altă bază):

Page 7: Ch02 poca r

2-7 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Bazele de numeraţie 2, 8, 10, 16• Exerciţiu: Scrieţi o coloană pentru baza 3. Convertiţi 1410 în baza 3. Rezultatul trebuie să fie 1123

Page 8: Ch02 poca r

2-8 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Conversii de baze

• Conversia între baze care sunt puteri ale lui doi se poate face foarte simplu:

10112 = (102)(112) = 234

234 = (24)(34) = (102)(112) = 10112

1010102 = (1012)(0102) = 528

011011012 = (01102)(11012) = 6D16

• De câţi biţi e nevoie pentru reprezentarea unei cifre în bazele 2, 4, 8, 16…?

În baza 2 pentru care 2 = 21, exponentul este 1 aşa că se foloseşte un singur bit. În baza 4 pentru care 4 = 22, exponentul este 2, aşa că se folosesc 2 biţi pentru reprezentarea oricărui număr din baza 4, în baza 8 se folosesc 3 cifre binare iar în baza 16 se folosesc 4.

Page 9: Ch02 poca r

2-9 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Adunare binară

Page 10: Ch02 poca r

2-10 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Numere cu semn

• Dacă reprezentăm numere pe 8 biţi, există 28 = 256 secvenţe distincte de biţi de lungime 8. Aceste secvenţe de biţi pot fi interpretate toate ca fiind numere pozitive (0 - 255) sau unele secvenţe le putem interpreta ca fiind numere negative iar altele pozitive. Jumătate le putem considera pozitive iar cealaltă jumătate negative.

• Modalităţi de reprezentare:

Magnitudine cu semn

Complement faţă de unu

Complement faţă de doi

Exces

Page 11: Ch02 poca r

2-11 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Magnitudine cu semn

• Bitul cel mai semnificativ este bit de semn (0 = pozitiv, 1 = negativ) iar restul biţilor reprezintă magnitudinea.

• Exemplu:

+2510 = 000110012

-2510 = 100110012

• Există două reprezentări pentru zero: (care sunt?)

+0 = 000000002, -0 = 100000002.

• Cel mai mare număr este +127, cel mai mic număr este -12710, folosind o reprezentare pe 8 biţi.

Page 12: Ch02 poca r

2-12 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Complement faţă de unu• Bitul cel mai semnificativ este bit de semn (0 = pozitiv, 1 =

negativ). Numărul negativ se obţine prin scăderea fiecărui bit din 2 (complementarea fiecărui bit din 0 se transformă în 1 şi din 1 în 0). Această operaţie de complementare faţă de 1 funcţionează atât pentru transformarea numerelor negative în numere pozitive cât şi invers.

• Exemplu:

+2510 = 000110012

-2510 = 111001102

• Şi aici există două reprezentări pentru zero: (care sunt ?)

+0 = 000000002, -0 = 111111112.

• Cel mai mare număr este +12710, cel mai mic este -12710, în reprezentarea pe 8 biţi.

Page 13: Ch02 poca r

2-13 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Complement faţă de doi• Bitul cel mai semnificativ este bit de semn (0 = pozitiv, 1 =

negativ). Numărul negativ se obţine prin adunarea valorii 1 la complementul faţă de unu al numărului negativ.

Această operaţie de complementare faţă de 2 funcţionează atât pentru transformarea numerelor negative în numere pozitive cât şi invers.

• Exemplu ( -2510 = 111001102 în complement faţă de unu:

+2510 = 000110012

-2510 = 111001112

• Există o singură reprezentare pentru zero: +0 = 000000002, -0 = 000000002.

• Cel mai mare număr +12710, cel mai mic -12810, folosind o reprezentare pe 8 biţi.

Page 14: Ch02 poca r

2-14 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Reprezentarea în exces• Cel mai semnificativ bit este bit de semn (de obicei 1 = pozitiv, 0

= negativ). Reprezentarea pozitivă şi negativă a unui număr se obţine prin adunarea unei valori la reprezentarea în complement faţă de doi. Aceasta funcţionează în ambele direcţii pozitiv-negativ, negativ-pozitiv. Efectul este că pentru numerele mici se foloseşte un număr mai mic de biţi, ceea ce simplifică compararea numerelor reale.

• Exemplu (exces 128 “adună” 128 la complementul faţă de doi, ignorând “transport out” dacă există la cel mai semnificativ bit) :

+1210 = 100011002

-1210 = 011101002

• O singură reprezentare pentru zero: +0 = 100000002, -0 = 100000002.

• Cel mai mare număr +12710, cel mai mic -12810, pe 8 biţi.

Page 15: Ch02 poca r

2-15 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Reprezentări BCD în complement faţă de 9 şi 10

• Fiecare cifră codificată binar (BCD) este formată din 4 biţi.

• Exemplu: Reprezentarea lui +07910 în BCD: 0000 0111 1001

• Exemplu: Reprezentarea lui -07910 în BCD: 1001 0010 0001. Se obţine prin scăderea din 9 a fiecărei cifre a lui 079 pentru a obţine complementul faţă de 9, 999-079 = 920. Adunând 1 obţinem complementul faţă de 10: 920+1=921. Convertirea fiecărei cifre a numărului din baza 10 în BCD obţinem: 1001 0010 0001.

Page 16: Ch02 poca r

2-16 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Reprezentări pe 3 biţi a unor întregi cu semn

Page 17: Ch02 poca r

2-17 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Numere în baza zece în virgulă mobilă

• Numerele în virgulă mobilă permit reprezentarea unor numere foarte mari şi a unor numere foarte mici folosind un număr mic de cifre, făcând compromisuri la precizie. Precizia este determinată de numărul de cifre din fracţie (significand, mantisă) care are atât parte întreagă cât şi parte fracţionară. Plaja de valori este determinată de numărul de cifre rezervate exponentului.

• Exemplu (+6.023 1023):

Page 18: Ch02 poca r

2-18 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Normalizare• Numărul 254 din baza 10 poate fi reprezentat sub forma în virgulă

flotantă (mobilă) ca 254 100, sau în mod echivalent ca:

25.4 101, sau

2.54 102, sau

.254 103, sau

.0254 104, sau ….

ceea ce creează probleme la efectuarea comparaţiilor (fiind atât de multe forme pentru acelaşi număr).

• Numerele în virgulă mobilă sunt de obicei normalizate, adică poziţia punctului zecimal este întotdeauna fixată pentru un anumit număr.

• De obicei, reprezentarea normalizată plasează punctul zecimal în stânga celei mai semnificative cifre a fracţiei, de ex. .254 103.

Page 19: Ch02 poca r

2-19 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Exemple de numere în virgulă mobilă• Reprezentarea lui .254 103 sub formă de virgulă mobilă

normalizat în baza 8 cu bit de semn, urmat de o reprezentare în exces 4 cu 3 biţi, urmat de 4 cifre în baza 8.

• Pasul #1: Se converteşte în baza ţintă

.254 103 = 25410. Folosind metoda restului, obţinem 25410=37680:

254/8 = 31 R 6

31/8 = 3 R 7

3/8 = 0 R 3

• Pasul #2: Normalizare: 376 80 = .376 83.

• Pasul #3: Se completează bitul de semn pozitiv 0. Exponentul 3+4=7 (exces 4), şi partea fracţionară de 4 cifre = .3760:

0 111 . 011 111 110 000

Page 20: Ch02 poca r

2-20 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Eroare, interval şi precizie• În exemplul precedent, baza era b = 8, numărul de cifre

semnificative în fracţie s = 4, cea mai mare valoare pentru exponent M = 3, cea mai mică valoare pentru exponent m = -4.

• În exemplul precedent, nu există o reprezentare explicită pentru 0, dar trebuie să existe rezervată o secvenţă de biţi specială pentru 0 altfel nu s-ar putea reprezenta valoare 0 fără încălcarea regulii normalizării. Vom considera secvenţa0 000 000 000 000 000 ca fiind reprezentarea pentru 0. 

• Folosind b, s, M şi m, vom caracteriza reprezentarea în virgulă mobilă în termeni de: cel mai mare număr pozitiv reprezentabil, cel mai mic număr pozitiv şi diferit de zero ce se poate reprezenta, cea mai mică diferenţă dintre două numere succesive, cea mai mare diferenţă dintre două numere succesive şi numărul total de numere ce se pot reprezenta.

Page 21: Ch02 poca r

2-21 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Eroare, interval şi precizie (cont.)

• Cel mai mare număr reprezentabil: bM (1 - b-s) = 83 (1 - 8-4)

• Cel mai mic număr reprezentabil: bm b-1 = 8-4 - 1 8-5

• Cea mai mare diferenţă: bM b-s = 83 - 4 = 8-1

• Cea mai mică diferenţă: bm b-s = 8-4 - 4= 8-8

Page 22: Ch02 poca r

2-22 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Eroare, interval şi precizie (cont.)

• Numărul de numere reprezentabile: Sunt 5 componente: (A) bit-ul de semn; pentru fiecare număr, cu excepţia lui zero, există atât un număr pozitiv cât şi unul negativ; (B) (M - m) + 1 exponenţi; (C) b - 1 valori pentru prima cifră (0 nu este permis ca primă cifră normalizată); (D) bs-1 valori pentru fiecare din cele s-1 cifre rămase, plus (E) o reprezentare specială pentru zero. Pentru acest exemplu, cele 5 componente dau: 2 ((3 - 4) + 1) (8 - 1) 84-1 + 1 numere ce pot fi reprezentate. Acest număr nu trebuie să fie mai mare decât numărul de secvenţe distincte de biţi ce pot fi generate, adică 216.

Bit de semn

Numărul de exponenţi

Prima cifră a fracţiei

Restul cifrelor fracţiei

Page 23: Ch02 poca r

2-23 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Exemple de formate în virgulă mobilă

• Cel mai mic număr este 1/8

• Cel mai mare număr este 7/4

• Cea mai mică diferenţă este 1/32

• Cea mai mare diferenţă este 1/4

• Numărul total de numere reprezentabile este 33.

Page 24: Ch02 poca r

2-24 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Diferenţa dintre două numere depinde de dimensiunea exponentului

• Eroarea relativă este aproximativ aceeaşi pentru toate numerele.

• Dacă considerăm raportul dintre o distanţă mare dintre două numere şi un număr mare respectiv raportul dintre o distanţă mică dintre două numere şi un număr mic vom constata că raporturile sunt identice:

Distanţă mare

Număr mare

Distanţă mică

Număr mic

Page 25: Ch02 poca r

2-25 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Exemplu de conversie• Exemplu: Convertiţi (9.375 10-2)10 în baza 2, notaţie ştiinţifică

• Începem prin convertirea din baza 10 - virgulă flotantă în baza 10 virgulă fixă prin mutarea punctului zecimal cu două poziţii la stânga, ceea ce corespunde exponentului -2: .09375.

• Convertim din baza 10 – virgulă fixă în baza 2 virgulă fixă:

.09375 2 = 0.1875

.1875 2 = 0.375

.375 2 = 0.75

.75 2 = 1.5

.5 2 = 1.0

• Rezultă: (.09375)10 = (.00011)2.

• În final, convertim în forma normalizată în baza 2 – virgulă mobilă:

.00011 = .00011 20 = 1.1 2-4

Page 26: Ch02 poca r

2-26 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Formatul IEEE-754 pentru numere în virgulă mobilă

Page 27: Ch02 poca r

2-27 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Exemple IEEE-754

Page 28: Ch02 poca r

2-28 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Exemplu de conversie IEEE-754

• Reprezentaţi -12.62510 în format IEEE-754 cu precizie simplă.

• Pasul #1: Se converteşte în baza ţintă -12.62510 = -1100.1012

• Pasul #2: Normalizare -1100.1012 = -1.1001012 23

• Pasul #3: Se completează biţii. Semnul este negativ, aşa că bitul de semn este 1. Exponentul este în format exces 127 (nu în exces 128!), aşa că exponentul este reprezentat ca numărul fără semn 3 + 127 = 130.

Primul bit al significandului cu valoarea 1 este ascuns aşa că, secvenţa de biţi este:

1 1000 0010 . 1001 0100 0000 0000 0000 000

Page 29: Ch02 poca r

2-29 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Efectul pierderii precizieiConform guvernului

SUA, în timpul operaţiunii “Furtună în deşert” 1991-1992, pierderea preciziei la conversia unui număr din reprezentarea întreg pe 24 de biţi în număr real pe 24 de biţi a fost cauza eşecului unui sistem anti-rachete Patriot (radar). S-a soldat cu 28 de americani morţi (25 Feb. 1991).

Page 30: Ch02 poca r

2-30 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Codul de caractere ASCII• ASCII este un cod pe 7

biţi, stocat într-un octet (8 biţi).

• “A” este la poziţia 4116. Pentru a converti litere mari în litere mici se adună 2016. Astfel “a” este la poziţia 4116 + 2016 = 6116.

• Caracterul “5” este la poziţia 3516 este diferit de numărul 5. Pentru a coverti “caracterele-cifră” în cifrele corespunzătoare trebuie scăzut 3016: 3516 - 3016 = 5.

Page 31: Ch02 poca r

2-31 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Codul de caractereEBCDIC

• EBCDIC este un cod pe 8 biţi

Page 32: Ch02 poca r

2-32 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Codul de caractereUnicode

• Unicode este un cod pe 16 biţi

Page 33: Ch02 poca r

2-33 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Test de verificare a cunoştinţelor la

Reprezentarea datelor

Nov. 2009

Page 34: Ch02 poca r

2-34 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

1.

Convertiţi numerele:

a. (47)10 în reprezentarea binar fără semn

b. (2C3)16 în baza 10

c. (10110.101)2 în baza 10

Page 35: Ch02 poca r

2-35 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

2.

Convertiţi numerele:

d. (55.875)10 în binar fără semn

e. (-27)10 în exces 32 pe 6 biţi

Page 36: Ch02 poca r

2-36 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

3.

f. Secvenţa de biţi 1000 este reprezentată în complement faţă de 2 pe 4 biţi. Cât este valoarea zecimală?

Page 37: Ch02 poca r

2-37 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

4.

g. Scrieţi reprezentarea lui (305)10 pe 4 cifre BCD şi

h. reprezentarea lui (-305)10 tot pe 4 cifre BCD în complement faţă de 10

Page 38: Ch02 poca r

2-38 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

5. i. Numărul -1.0101 x 2-2 este reprezentat în

baza 2 notaţie ştiinţifică. Scrieţi reprezentarea binară în virgulă mobilă a acestui număr pe 8 biţi ştiind că bitul cel mai semnificativ este bit de semn, următorii trei biţi reprezintă exponentul reprezentat în exces 3 iar ultimii 4 biţi, cei mai puţin semnificativi, reprezintă partea fracţionară normalizată un bit fiind ascuns. Bitul ascuns este în partea dreaptă a punctului zecimal.

Page 39: Ch02 poca r

2-39 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

GATA!

Page 40: Ch02 poca r

2-40 Reprezentarea datelor

Arhitectura Sistemelor de Calcul

Răspunsuri:

a. (47)10 = (101111)2

b. (2C3)16 = (707)10

c. (10110.101)2 = (181/8)10

d. (55.875)10 = (110111.111)2

e. (-27)10 = (000101)2 în exces 32f. (1000)2 = -8 (complement faţă de 2 pe 4 biţi)g. (305)10 = 0011 0000 0101 (BCD)h. (-305)10 = 0110 1001 0101 (BCD complement faţă de 10)i. -1.0101 x 2-2 = 1 001 0101