Sunteți pe pagina 1din 46

1.

1 - Clasificarea informat, iilor

Clasificarea informat, iei:

Sign-Magnitude
Binary One's Complement
Two's Complement
Fixed-point
Instructions Binary Coded Decimal
Decimal Excess of 3
Numbers
Information Two-out-of-five
IEEE 754
Data Floating-point
IBM floating-point format
ASCII
Non-numerical data EBCDIC
UNICODE

3 / 48
1.1 - Clasificarea informat, iilor (contin.)

Bit: binar digit


▶ byte
▶ cuvinte

Coduri pentru date non-numerice


▶ American Standard Code for Information Interchange (ASCII)
▶ Extended Binary Coded Decimal Interchange Code (EBCDIC)
▶ UNICODE

4 / 48
1.1 - Clasificarea informat, iilor (cont.)

Numere de virgulă fixă


▶ ı̂ntregi
▶ fract, ionare

Numere de virgulă mobilă:


▶ reprezentare aproximativă
▶ Se consideră valoarea 1e20
▶ (3.14 + 1e20) − 1e20 = 0
▶ 3.14 + (1e20 − 1e20) = 3.14
▶ ⇒ Adunarea numerelor de virgulă mobilă: nu este asociativă!

5 / 48
1.2 - Reprezentarea numerelor de virgulă fixă

Numărul X reprezentat ı̂n baza r:


▶ X = xn−1 xn−2 · · · x1 x0 .x−1 x−2 · · · x−m
▶ parte ı̂ntreagă: xn−1 xn−2 · · · x1 x0
▶ parte fract, ionară: x−1 x−2 · · · x−m
▶ Most Significant Bit (MSB) (cel mai semnificativ bit): xn−1
▶ Least Significant Bit (LSB) (cel mai put, in semnificativ bit): x−m

Valoarea lui X reprezentată ı̂n baza r:


▶ X = n−1 j
P
j=−m xj ∗ r , 0 ≤ xj < r
▶ rj : ponderea cifrei xj
▶ reprezentare pozit, ională

6 / 48
1.2 - Reprezentarea numerelor de virgulă fixă (cont.)

Atunci când baza r = 2 → sistem de reprezentare binar.


Exemplu:

103(10)= 1 1 0 0 1 1 1 . (2)
weights 26 25 24 23 22 21 20

68(10)= 1 0 0 0 1 0 0 . (2)

Pozit, ia virgulei binare:


▶ convent, ie pentru reprezentarea numerelor ı̂ntregi s, i fract, ionare
▶ evită codificarea pozit, iei virgulei ı̂n reprezentarea numerelor
▶ rămân mai mult, i bit, i pentru precizie

7 / 48
1.2 - Reprezentarea numerelor de virgulă fixă (cont.)

Pentru numere ı̂ntregi, virgula binară se află la dreapta celui mai


put, in semnificativ bit (LSB).
▶ X = xn−1 xn−2 · · · x1 x0 . = n−1 i
P
i=0 xi ∗ 2 , pentru X pe n bit, i

Pentru numere fract, ionare, punctul binar se află la stânga celui mai
semnificativ bit (MSB).
▶ X = .xn−1 xn−2 · · · x1 x0 = n−1 i−n , pentru X pe n biti
P
i=0 xi ∗ 2 ,

Exemplu:
103
128 = . 1 1 0 0 1 1 1(2)
(10)
weights 2-1 2-2 2-3 2-4 2-5 2-6 2-7

17
32 = . 1 0 0 0 1(2)
(10)

8 / 48
1.2.1 - Semn-Mărime

MSB codifică semnul numărului. Convent, ia de semn:


▶ numerele pozitive au bitul de semn 0
▶ numerele negative au bitul de semn 1

Numărul X , pe n bit, i, este reprezentat ı̂n forma Semn-Mărime


astfel:
▶ X = xn−1 xn−2 xn−3 · · · x1 x0 , unde
▶ xn−1 fiind semnul lui X
▶ xn−2 xn−3 · · · x1 x0 fiind magnitudinea lui X

Exemplu:
+10310 = 0 1100111(SM)
−10310 = 1 1100111(SM)

9 / 48
1.2.1 - Semn-Mărime (cont.)

Interval valoric:

▶ cel mai mare număr ı̂ntreg pe n bit, i, ı̂n Semn-Mărime:


▶ MAXINTSM : 0 11 · · · 111.
| {z }
n−1 bit, i
▶ valoarea lui MAXINTSM = 2n−1 − 1
▶ ⇒ interval de valori pentru numerele ı̂ntregi pe n bit, i:
[1 − 2n−1 ; 2n−1 − 1]

▶ cel mai mare număr fract, ionar pe n bit, i, ı̂n Semn-Mărime:


▶ MAXFRASM : 0 .11 · · · 111
| {z }
n−1 bit, i
▶ valoarea lui MAXFRASM = 1 − 2−n+1
▶ ⇒ interval de valori pentru numerele fract, ionare pe n bit, i:
[2−n+1 − 1; 1 − 2−n+1 ]

10 / 48
1.2.1 - Semn-Mărime (cont.)

Precizie:

▶ luăm ı̂n considerare numerele Semn-Mărime pe n bit, i


▶ câte cifre zecimale sunt necesare pentru a reprezenta oricare
dintre numerele Semn-Mărime pe n bit, i?

▶ 2n−1 − 1 = 10p , unde p este precizia


▶ rezultă că p = ⌈log10 (2n−1 − 1)⌉
▶ astfel, p ≤ ⌈log10 (2n−1 )⌉ =
▶ ı̂n final, p ≤ ⌈(n − 1) ∗ 0.3⌉

Exemplu: se consideră numere Semn-Mărime pe 10 bit, i.


▶ precizia p ≈ ⌈9 ∗ 0.3⌉ = ⌈2.7⌉ = 3
▶ cel mai mare număr ı̂ntreg ı̂n Semn-Mărime pe 10 bit, i este
+511, a cărui reprezentare zecimală are 3 cifre

11 / 48
1.2.1 - Semn-Mărime (cont.)

Complexitatea hardware a reprezentării Semn-Mărime:


▶ complexitate hardware moderată
▶ favorabilă operat, iei de ı̂nmult, ire

Dezavantaje:
▶ există două configurat, ii binare pentru 0 ı̂n Semn-Mărime
▶ +0 : 0 00 · · · 000
▶ −0 : 1 00 · · · 000

12 / 48
1.2.1 - Semn-Mărime (cont.)

Dezavantaje:
▶ Adunarea ı̂n Semn-Mărime
▶ se consideră operanzii X = 5 s, i Y = 2, pe 4 bit, i
▶ cele patru posibile configurat, ii de semn pentru adunare

X=+5: 0 1 0 1 SM X=+5: 0 1 0 1 SM
+ +
Y=+2: 0 0 1 0SM Y=-2: 1 0 1 0SM
0 1 1 1 SM =+7SM 1 1 1 1 SM =-7SM

X=-5: 1 1 0 1 SM X=-5: 1 1 0 1 SM
+ +
Y=+2: 0 0 1 0SM Y=-2: 1 0 1 0SM
1 1 1 1 SM =+7SM 1 0 1 1 1 SM =+7SM

13 / 48
1.2.2 - Complementul de 1

MSB codifică semnul (aceeas, i convent, ie ca pentru SM).


Numărul X , pe n bit, i, este reprezentat ı̂n Complementul de 1
astfel: 
0 xn−2 xn−3 · · · x1 x0 X ≥ 0
▶ X = , unde
1 xn−2 xn−3 · · · x1 x0 X ≤ 0
▶ xi reprezentând complementul lui xi : xi = 1 − xi
▶ Reprezentare non-pozitionala (non-ponderata)

Exemplu:
+10310 = 0 1100111(C 1)
−10310 = 1 0011000(C 1)
+6810 = 0 1000100(C 1)
−6810 = 1 0111011(C 1)

14 / 48
1.2.2 - Complementul de 1 (cont.)
Interval de valori:
▶ la fel ca pentru Semn-Mărime
▶ pentru un număr dat pe n bit, i, Semn-Mărime s, i Complementul de
1 codifică acelas, i număr de valori

Precizie:
▶ la fel ca pentru Semn-Mărime
▶ deoarece codifică acelas, i număr de valori, Complementul de 1 are
aceeas, i precizie ca Semn-Mărime

Complexitate hardware:
▶ complexitatea hardware mai mare pentru Complementul de 1
▶ nu mai este favorabil operat, iei de ı̂nmult, ire

Dezavantaje:
▶ există două configurat, ii binare pentru 0 ı̂n Complementul de 1
▶ +0 : 0 00 · · · 000
▶ −0 : 1 11 · · · 111
15 / 48
1.2.2 - Complementul de 1 (cont.)
Dezavantaje:
▶ Adunarea ı̂n Complementul de 1
▶ se consideră aceias, i operanzi X = 5 s, i Y = 2, pe 4 bit, i
▶ cele patru posibile configurat, ii de semn pentru adunare

X=+5: 0 1 0 1 C1 X=+5: 0 1 0 1 C1
+ +
Y=+2: 0 0 1 0C1 Y=-2: 1 1 0 1 C1
0 1 1 1 C1 =+7C1 end 1 0 0 1 0C1 =+2C1
around +
carry 1
0 0 1 1 C1 =+3C1

X=-5: 1 0 1 0C1 X=-5: 1 0 1 0C1


+ +
Y=+2: 0 0 1 0C1 Y=-2: 1 1 0 1 C1
1 1 0 0C1 1 0 1 1 1 C1 =+7C1
+
1 0 1 1 SM =-3SM 1
1 0 0 0C1
1 1 1 1 SM =-7SM
Există dezavantaje legate de adunarea ı̂n Complementul de 1?
16 / 48
1.2.3 - Complementul de 2
MSB codifică semnul (aceeas, i convent, ie ca pentru SM).
Numărul ı̂ntreg
 X , pe n bit, i, este reprezentat ı̂n C2 astfel:
0 xn−2 xn−3 · · · x1 x0 . X ≥0
▶ −X =
(1 xn−2 xn−3 · · · x1 x0 . + 1) mod 2n X < 0
Numărul fract
 , ionar X , pe n bit, i, este reprezentat ı̂n C2 astfel:
0 .xn−2 xn−3 · · · x1 x0 X ≥0
▶ −X =
(1 .xn−2 xn−3 · · · x1 x0 + 0.0 · · · 01) mod 2 X < 0
Operat, iile mod 2n s, i mod 2 pentru numerele ı̂ntregi, respectiv,
fract, ionare, asigură că transportul generat dinspre MSB este
ignorat

+10310 = 0 1 1 0 0 1 1 1 (C 2)

−10310 = 1 1 1 0 0 1 1 1 (SM)
= 1 0 0 1 1 0 0 0 (C 1)
1 +
= 1 0 0 1 1 0 0 1 (C 2)
17 / 48
1.2.3 - Complementul de 2 (cont.)

Regulă practică de conversie SM ↔ C2:


▶ se păstrează bitul de semn
▶ ı̂ncepând de la stânga spre dreapta, se complementează fiecare
bit, cu except, ia celui mai din dreapta bit de 1 s, i a tuturor
zerourilor care ı̂l urmează

Exemplu: se consideră numere pe 10 bit, i:

−10310 = 1 1 1 0 0 1 1 1 (SM)
⇓ ⇓ ⇓ ⇓ ⇓ ⇓
= 1 0 0 1 1 0 0 1 (C 2)

−6810 = 1 1 0 0 0 1 0 0 (SM)
⇓ ⇓ ⇓ ⇓
= 1 0 1 1 1 1 0 0 (C 2)

18 / 48
1.2.3 - Complementul de 2 (cont.)

Reprezentare non-pozitionala (non-ponderata)


Intervalul valoric:
▶ pentru numere ı̂ntregi pe n bit, i: [−2n−1 ; 2n−1 − 1]
▶ pentru numere fract, ionare pe n bit, i: [−1; 1 − 2−n+1 ]

Precizia:
▶ p = ⌈(n − 1)log10 2⌉

Complexitate hardware:
▶ adunarea s, i scăderea sunt mai simple decât ı̂n cazul SM/C1
(SM nu poate efectua corect adunări independent de semnele
operanzilor)
▶ ı̂nmult, irea este mai complexă decât ı̂n cazul SM

19 / 48
1.2.3 - Complementul de 2 (cont.)

Configurat, ia binară pentru -0 este diferită de cea pentru +0?


▶ se consideră operanzi ı̂ntregi pe n bit, i

−0 = 1 0 0 ··· 0 0 0 (SM)
= 1 1 1 ··· 1 1 1 (C 1)
1 +
= 1 0 0 0 ··· 0 0 0 (C 2)

▶ observat, ii:
▶ Este ignorat transportul din MSB (cel mai din stânga bit de 1)
deoarece adunarea unităt, ii se efectuează modulo 2n , conform
definit, iei Complementului de doi
▶ Pentru numere fract, ionare, se poate construi reprezentarea -0
ı̂ntr-un mod similar

20 / 48
1.2.3 - Complementul de 2 (cont.)
Adunarea binară ı̂n Complementul de 2:
▶ se consideră aceias, i operanzi X = 5 s, i Y = 2, pe 4 bit, i
▶ cele patru configurat, ii posibile ale semnelor pentru adunare
X=+5: 0 1 0 1 C2 X=+5: 0 1 0 1 C2
+ +
Y=+2: 0 0 1 0C2 Y=-2: 1 1 1 0C2
0 1 1 1 C2 =+7C2 1 0 0 1 1 C2 =+3C2

X=-5: 1 0 1 1 C2 X=-5: 1 0 1 1 C2
+ +
Y=+2: 0 0 1 0C2 Y=-2: 1 1 1 0C2
1 1 0 1 C2 1 1 0 0 1 C2
1 0 1 1 SM =-3SM 1 1 1 1 SM =-7SM

Avantajele aritmeticii ı̂n Complementul de 2:


▶ operat, ie corectă indiferent de semnele operandelor
▶ facilitează implementarea scăderii: X − Y = X + (−Y )
▶ carry-out din MSB este ignorat
▶ bitul de semn este tratat ca oricare alt bit de magnitudine 21 / 48
1.2.3 - Complementul de 2 (cont.)
Comparat, ie a codurilor pentru numere ı̂ntregi pe 5 bit, i:
Număr Coduri binare de virgulă fixă
zecimal SM C1 C2
+15 01111 01111 01111
+14 01110 01110 01110
.. .. .. ..
. . . .
+2 00010 00010 00010
+1 00001 00001 00001
+0 00000 00000 00000
-0 10000 11111 00000
-1 10001 11110 11111
-2 10010 11101 11110
.. .. .. ..
. . . .
-14 11110 10001 10010
-15 11111 10000 10001

22 / 48
1.2.3 - Complementul de 2 (cont.)
Comparat, ie a codurilor pentru numere ı̂ntregi pe 5 bit, i:
Număr Coduri binare de virgulă fixă
zecimal SM C1 C2
+15 01111 01111 01111
+14 01110 01110 01110
.. .. .. ..
. . . .
+2 00010 00010 00010
+1 00001 00001 00001
+0 00000 00000 00000
-0 10000 11111 00000
-1 10001 11110 11111
-2 10010 11101 11110
.. .. .. ..
. . . .
-14 11110 10001 10010
-15 11111 10000 10001
-16 — — 10000
23 / 48
1.2.3 - Complementul de 2 (cont.)

Anomalia Complementului de doi:


▶ Prin convent, ie, configurat, ia 1 00 · · · 000C 2 codifică:

−2n−1 pentru numere ı̂ntregi


1 00 · · · 000C 2
−1 pentru numere fractionare

▶ Pentru numerele fără semn, aceeas, i configurat, ie codifică:

1 00 · · · 000 = +2n−1

24 / 48
1.2.3 - Complementul de 2 (cont.)

Overflow aritmetic:
▶ Rezultatul unei operat, ii aritmetice depăs, es, te capacitatea de
stocare.

Overflow aritmetic pentru numere fără semn:


▶ Se consideră X = 35, Y = 33 numere fără semn, pe 6 bit, i
storing capacity
X=35: 1 00011
+
Y=33: 1 00001
1 0001 00 =4 (overflow)
▶ Dacă X s, i Y ar fi fost fără semn pe 7 bit, i:
storing capacity
X=35: 01 00011
+
Y=33: 01 00001
1 0001 00 =68

Notă: Overflow-ul la operat, iile cu operanzi fără semn apare atunci


când se generează un transport din MSB.
25 / 48
1.2.3 - Complementul de 2 (cont.)

Overflow aritmetic pentru operanzi cu semn (C2):


▶ Se consideră X = +19, Y = +14 reprezentate ı̂n C2, pe 6 bit, i
storing capacity
X=+19: 0 1 0 0 1 1 C2
+
Y=+14: 0 0 1 1 1 0C2
1 0 0 0 0 1 C2 =-31 (overflow)
▶ Dacă X s, i Y ar fi fost fără semn pe 7 bit, i:
storing capacity
X=+19: 0 0 1 0 0 1 1 C2
+
Y=+14: 0 0 0 1 1 1 0 C2
0 1 0 0 0 0 1 C2 =+33

Notă: Overflow-ul pentru operanzii cu semn (C2) apare atunci


când adunarea a doi operanzi de acelas, i semn produce un rezultat
de semn opus.

26 / 48
1.2.4 - Interpretare alternativă a Complementului de doi

Interpretarea lui Robertson:


▶ Facilitează ı̂nmult, irea operanzilor ı̂n C2

Fie X un număr ı̂ntreg negativ, reprezentat ı̂n C2, pe n bit, i:

X = 1 ⋆
xn−2 ⋆
xn−3 ··· x1⋆ x0⋆

= ( 1 ⋆
xn−2 ⋆
xn−3 ··· x1⋆ x0⋆ ) mod 2n

=  1 0 0 ··· 0 0 
⋆ ⋆ mod 2n
+ 0 xn−2 xn−3 · · · x1⋆ x0⋆

= ( −2n−1 + 0 ⋆
xn−2 ⋆
xn−3 · · · x1⋆ x0⋆ ) mod 2n
Număr pozitiv ı̂n C2

= −2n−1 + 0 ⋆
xn−2 ⋆
xn−3 ··· x1⋆ x0⋆

27 / 48
1.2.4 - Interpretare alternativă a Complementului de doi (contd.)
Interpretarea lui Robertson: valoarea unui număr negativ ı̂n C2
este egală cu valoarea numărului pozitiv obt, inut prin s, tergerea
bitului de semn din care se scade ponderea asociată bitului de
semn.

Exemplu:
−10310 = 1 0 0 1 1 0 0 1 (C 2)

= −1 ∗ 27 + 0 0 0 1 1 0 0 1 (C 2)
= −128+ 25
= −103

−6810 = 1 0 1 1 1 1 0 0 (C 2)

= −1 ∗ 27 + 0 0 1 1 1 1 0 0 (C 2)
= −128+ 60
= −68
28 / 48
1.2.4 - Interpretare alternativă a Complementului de doi (contd.)
Interpretarea lui Robertson se aplică s, i numerelOR pozitive:
+10310 = 0 1 1 0 0 1 1 1 (C 2)
= −0 ∗ 27 + 0 1 1 0 0 1 1 1 (C 2)
= 0+ 103
= +103

În general:
▶ SE consideră X , ı̂ntreg reprezentat ı̂n C2, pe n bit, i, cu
X = xn−1 xn−2 xn−3 · · · x1 x0
▶ valoarea lui X poate fi exprimată ca:
n−2
X
n−1
X = −xn−1 ∗ 2 + xi ∗ 2i
i=0

Considerat, ii similare pot fi construite s, i pentru numerele


fract, ionare ı̂n C2.
29 / 48
1.3 - Reprezentarea numerelor zecimale cu punct fix

Comparat, ie coduri de reprezentare zecimală:

Cifra Coduri zecimale de virgulă fixă


zecimală BCD8421 Exces de 3 Doi-din-cinci
0 0000 0011 11000
1 0001 0100 00011
2 0010 0101 00101
3 0011 0110 00110
4 0100 0111 01001
5 0101 1000 01010
6 0110 1001 01100
7 0111 1010 10001
8 1000 1011 10010
9 1001 1100 10100

Notă: codificarea doi-din-cinci nu este unică.

30 / 48
1.3.1 - Binary Coded Decimal 8421

Reprezintă o cifră zecimală pe o tetradă (grup de patru bit, i)


▶ tetradă ≡ nibble ≡ 4 bit, i consecutivi
▶ de obicei, referit prin mai simplul Binary Coded Decimal (BCD)

Exemplu:

29710 = 0010 1001 0111 BCD

▶ ponderea unui bit ı̂n reprezentare este 10i ∗ 2j , unde


▶ i - pozit, ia cifrei zecimale
▶ j - pozit, ia bitului ı̂n tetradă

▶ ponderi fixe → reprezentare pozit, ională

31 / 48
1.3.2 - Exces de 3

Reprezintă o cifră zecimală pe o tetradă


▶ Excesul ≡ bias
▶ Valoare adăugată la toate configurat, iile codificării

Excesul de 3 (E3) adaugă 3 unităt, i la cifra zecimală BCD


corespunzătoare.
▶ Nu este pozit, ional
▶ Facilitează adunarea

Exemplu:

29710 = 0101 1100 1010 E3

32 / 48
1.3.3 - Doi-din-cinci

Reprezintă o cifră zecimală folosind 5 bit, i


▶ 2 bit, i din cei 5 utilizat, i pentru reprezentarea unei cifre sunt 1
▶ 3 bit, i din cei 5 utilizat, i pentru reprezentarea unei cifre sunt 0

Doi-din-cinci (2-o-o-5) facilitează detectarea erorilor:


▶ folosind coduri de paritate: modificarea oricăruia dintre cei 5 bit, i
schimbă numărul de bit, i de 1 s, i 0 ı̂n reprezentarea fiecărei cifre

Exemplu:

29710 = 00101 10100 10001 2−o−o−5

33 / 48
1.4 - Reprezentarea numerelor de virgulă mobilă

Notat, ie s, tiint, ifică: X = XM ∗ B XE


▶ XM - mantisa, reprezentată ca un număr de virgulă fixă,
fract, ionar
▶ XE - exponentul, reprezentat ca un număr de virgulă fixă, ı̂ntreg
▶ B - baza reprezentării; ı̂n mod obis, nuit, B este 2 sau o putere a
lui 2

Atât XM , cât s, i XE pot fi reprezentate ı̂n SM sau ı̂n C2.

34 / 48
1.4.1 - Considerat, ii generale

Formatul de virgulă mobilă:


sign exponent fractional part of mantissa
*
S XE XM
<1> <e> <m>

Mantisa foloses, te 1 bit pentru semn s, i m bit, i pentru partea


fract, ionară:

XM = S.XM

unde
▶ XM - mantisă
▶ S - semnul numărului de virgulă mobilă
▶ XM ⋆ - partea fractionară a mantisei
,

35 / 48
1.4.1 - Considerat, ii generale (contin.)
Constrângeri de reprezentarea numerelor de virgulă mobilă
A Reprezentarea valorii 0
▶ XE egal cu 0: ar trebui să fie cea mai mică valoare posibilă
▶ comparat, ie rapidă cu 0
▶ erori de rotunjire

SM : cea mai mică valoare: 11 · · · 1 = −2e−1 + 1


XE
C 2 : cea mai mică valoare: 10 · · · 0 = −2e−1

▶ XM egal cu 0: ar trebui să fie configurat, ia all-0, indiferent de


codul de reprezentare folosit, SM sau C2

Asamblând toate câmpurile ı̂mpreună:

SM : S|11 · · · 1|00 · · · 0
0
C 2 : S|10 · · · 0|00 · · · 0

36 / 48
1.4.1 - Considerat, ii generale (contin.)
Constrângeri de reprezentarea numerelor de virgulă mobilă
A Reprezentarea valorii 0
▶ Compararea rapidă cu 0 a numerelor de virgulă mobilă
▶ necesită ca XE să fie all-0
▶ ⇒ utilizarea unui cod bias (sau exces) pentru XE
▶ fiecărei configurat, ii binară a noului cod exces i se asociază o valoare
egală cu valoarea binară a codului la care se adaugă valoarea
excesului

Excesul: cea mai mare valoare reprezentabilă ı̂n câmpul XE :

SM : 2e−1 − 1
exces
C 2 : 2e−1

Noua reprezentare a lui 0:

0 S|00 · · · 0|00 · · · 0

Observat, ie: reprezentarea lui 0 este cu semn, semnul S fiind


codificat ı̂n MSB-ul formatului. 37 / 48
1.4.1 - Considerat, ii generale (contin.)
Constrângeri de reprezentarea numerelor de virgulă mobilă
B Reprezentarea mantisei
▶ Inerent redundantă
▶ În zecimal, următoarele expresii se referă la aceeas, i valoare:
0.237 = 0.0237 ∗ 101 = 0.000237 ∗ 103 = 23.7 ∗ 10−2 = · · ·
▶ Utilizarea mantisei normalizate: reprezentare unică

1 dacă mantisa este ı̂n SM


MSB-ul părt, ii fract, ionare a mantisei :
S dacă mantisa este ı̂n C2
Exemplu:
0.1 1 1 SM = 73 1.1 1 1 SM = -73
msb=1 2 msb=1 2
0.1 1 1 C2 = 73 1.0 0 1 C2 = -73
S msb=S 2 S msb=S 2
Intervalul de valori al mantisei:
1
≤ ∥XM ∥ < 1
2
38 / 48
1.4.2 - IEEE 754

32 bit, i (precizie simplă)


Format portabil : 64 bit, i (precizie dublă)
128 bit, i (precizie cvadruplă)

Format de schimb de date:


▶ pe 16 bit, i (precizie ı̂njumătăt, ită)
▶ folosit pentru accelerarea Deep Neural Networks

Formatul de precizie simplă:


sign exponent fractional part of significand

S XE XS*
<1> <8> <23>

Câmpul exponentului, XE , reprezintă exponentul real ı̂ntr-un cod


exces de 127(= 28−1 − 1).
39 / 48
1.4.2 - IEEE 754 (contin.)
Mantisa, pentru standardul IEEE 754, constă din bitul de semn s, i
significand. Significandul este fără semn s, i are reprezentarea:

XS = 1.XS⋆

unde
▶ XS - significand
▶ 1 - pozit, ia supraunitară; ascunsă ı̂n reprezentare
▶ XS⋆ - partea fract, ionară a significandului

Intervalul de valori pentru significand este:

1 ≤ XS < 2

Valoarea unei reprezentări IEEE 754 de precizie simplă este dată de


relat, ia:
X = (−1)S ∗ 2XE −exces ∗ (1.XS⋆ )
40 / 48
1.4.2 - IEEE 754 (contin.)
Limitele standardului IEEE 754 de precizie simplă:
negative negative positive positive

 
overflow underflow underflow overflow
- +
Nmin NMAX Pmin PMAX
normalized 0 normalized
negatives positives

Determinarea valorii PMAX :


XE = XEmax − 1 = 255 − 1 = 254
XS⋆ = . 1 1 · · · 1 1 1 = 1 − 2−23
23 de bit, i
PMAX = (−1)0 ∗ 2254−127 ∗ (1.11 · · · 1) = 2127 ∗ (2 − 2−23 ) ≈ 3.4 ∗ 1038

Determinarea valorii Pmin :


XE = XEmin + 1 = 0 + 1 =1

XS = . 0 0 · · · 0 0 0 = 0
23 de bit, i
Pmin = (−1) ∗ 21−127 ∗ (1.00 · · · 0) = 2−126 ≈ 1.18 ∗ 10−38
0
41 / 48
1.4.2 - IEEE 754 (contin.)
Valori speciale ı̂n IEEE 754
A Not a Number (NaN)
▶ rezultatul unor operat, ii precum ∞ − ∞, 0 ∗ ∞, ∞ 0
∞, 0, X

mod 0, valoare negativă
▶ câmpul exponentului, XE = XEmax = 255
▶ câmpul de parte fract, ionară a significandului, XS⋆ ̸= 0
▶ valoarea părt, ii fract, ionare a significandului indică operat, ia care a
produs NaN

B Infinit
▶ indică un rezultat care depăs, es, te capacitatea de reprezentare
▶ preferabil operat, iei de trunchiere la PMAX
▶ Q: de ce?

▶ rezultatul unor operat, ii precum X ÷ 0, X ± ∞, ∞
▶ câmpul exponentului, XE = XEmax = 255
▶ câmpul de parte fract, ionară a significandului, XS⋆ = 0
42 / 48
1.4.2 - IEEE 754 (contin.)
Valori speciale ı̂n IEEE 754
C Zero
▶ câmpul exponentului, XE = XEmin = 0
▶ câmpul părt, ii fract, ionare a significandului, XS⋆ = 0

D Numere denormalizate (Denormals)


▶ indică un rezultat, ı̂n valoare absolută, mai mic decât Pmin , dar
cu XS⋆ nenul
▶ preferabil trunchierii la Pmin
▶ câmpul exponentului, XE = XEmin = 0
▶ câmpul părt, ii fract, ionare a significandului, XS⋆ ̸= 0
Valoarea unui denormal este dată de:
XD = (−1)S ∗ 21−exces ∗ (0.XS⋆ )
unde
▶ XD - număr denormalizat
▶ 0 - pozit, ia supraunitară; ascunsă ı̂n reprezentare
▶ XS⋆ - parte fract, ionară a significandului
43 / 48
1.4.2 - IEEE 754 (contin.)
Exemplu: Reprezentat, i X = 612.80468752 ı̂n formatul IEEE 754 de
precizie simplă
612.804687510 =1001100100.11001112
612 - .804687510 ×2
512 (29) 1.60937510 ×2
100 - 1.2187510 ×2
64 (26) 0.437510 ×2
36 - 0.87510 ×2
32 (25) 1.7510 ×2
4 (22) 1.510 ×2
1.010
612.804687510 =1.00110010011001112×29
XE=(9+bias)10=(9+127)10=13610=100010002
XS* =.00110010011001112
S XE XS*
X: 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0
4 4 1 9 3 3 8 016
X=4419338016
44 / 48
1.4.2 - IEEE 754 (contin.)

Exemplu: Dându-se configurat, ia 412A000016 care reprezintă un


număr de virgulă mobilă ı̂n formatul IEEE 754 de precizie simplă,
determinat, i corespondentul său zecimal.
4 1 2 A 0 0 0 016
X: 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
S XE XS*
XE=100000102=(128+2)10=13010
XS* =.0101012
X=(-1)S×2XE -bias×(1.XS* )=(-1)0×2130-127×(1.0101012)=23*1.0101012
X=1010.1012=(10+2-1+2-3)10=(10+0.5+0.125)10=10.62510

45 / 48
1.4.3 Formatul de virgulă mobilă IBM
Specific sistemelor IBM S/360, S/370
▶ Formate de 32, 64 s, i 128 de bit, i
▶ Baza 16 (= 24 )
▶ Fără bit ascuns
▶ Normalizarea mantisei:
▶ Tot, i bit, ii mantisei sunt la dreapta virgulei binare
▶ Pot exista cel mult 3 leading-zeroes
▶ Un singur caz special - zero:
▶ XE = 0

▶ XM =0

Formatul de 32 de bit, i:
sign exponent fractional part of mantissa
*
S XE XM
<1> <7> <24>

▶ Valoarea lui X poate fi exprimată ca:


X = (−1)S ∗ 16XE −bias ∗ (0.XM⋆)

▶ Exponent reprezentat ı̂n exces de 64 (= 27−1 )


46 / 48
1.4.3 Formatul de virgulă mobilă IBM (contin.)

Exemplu: Reprezentat, i valoarea reală X = 612.80468752 ı̂n


formatul de virgulă mobilă IBM pe 32 de bit, i
612.804687510 =1001100100.11001112
612.804687510 =0.00100110010011001112×163
XE=(3+bias)10=(3+64)10=6710=10000112
*
XM =.00100110010011001112
*
S XE XM
X: 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0
4 3 2 6 4 C E 016
X=43264CE016

47 / 48
1.4.3 Formatul de virgulă mobilă IBM (contin.)

Exemplu: Determinat, i valoarea zecimală reală care corespunde


configurat, iei hexazecimale 412A000016 , având ı̂n vedere că
valoarea hexazecimală reprezintă un număr de virgulă mobilă ı̂n
formatul IBM pe 32 de bit, i.
4 1 2 A 0 0 0 016
X: 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
*
S XE XM
XE=10000012=(64+1)10=6510
*
XM =.00101012
X=(-1)S×16XE -bias×(0.XM
*
)=(-1)0×1665-64×(0.00101012)=24×0.0010101
X=10.1012=(2+2-1+2-3)10=(2+0.5+0.125)10=2.62510

48 / 48

S-ar putea să vă placă și