E. Pohyblivá řádová čárka

Transkript

E. Pohyblivá řádová čárka
E. Pohyblivá řádová čárka
•
•
•
•
•
•
•
•
•
•
•
pevná a pohyblivá řádová čárka
formát US Air Force MIL-STD-1750A
základní operace
normalizace
přetečení a nenaplnění
formát BFLM – 1
přímý kód
– sčítání a odčítání
– násobení, dělení a posuvy
obvody pro posuv
aditivní kód
– sčítání a odčítání
formát BFLM – 2
formát ANSI/IEEE Std 754-1985
JPO 2005/6
c A. Pluháček 12.4.2006
pevná a pohyblivá řádová čárka
řádová mřížka (dosud uvažovaná) . . .
pevná řádová čárka
=⇒ omezený rozsah čísel
změna rozsahu (ale nikoliv změna přesnosti!):
• vhodné (konstantní) měřítko
• proměnné měřítko (mění se podle potřeby)
→ pohyblivá řádová čárka
(M, E)
∼
A = M ·z E
M — mantisa . . . Jaké číslice?
E — exponent nebo charakteristika . . . Kam umístit čárku?
znaménko(A) = znaménko(M )
JPO 2005/6
E1
c A. Pluháček 12.4.2006
pohyblivá řádová čárka — příklad formátu
Příklady 1 a 2: (US Air Force MIL-STD-1750A)
24 bitů
8 bitů
D′ (M )
D′′ (E)
dvojková čárka
dvojková čárka
D′ (M ) . . . doplňkový kód, modul Z = 2, t.j. 20+1
D′′ (E) . . . doplňkový kód, modul Z = 256, t.j. 27+1
1. A ∼ A8 00 00 0316 = 1010 1000 0 . . . 0 0000 00112
D′ (M ) = 1,010 12 ⇒ M = −0,10112
D′′ (E) = 112
⇒ E = 112 = 310
A
=
−0,10112 ⊳ 310
=
−101,12
=
−5,5 10
2. A ∼ 58 00 00 FF16 = 0101 1000 0 . . . 0 1111 11112
D′ (M ) = 0,101 12
⇒ M = 0,10112
′′
D (E) =1111 11112 ⇒ E = −12 = −110
A = 0,10112 ⊲ 1 = 0,010112 = 0,343 750 10
JPO 2005/6
E2
c A. Pluháček 12.4.2006
základní operace
i
násobení a dělení:
M1 · z E1 · M2 · z E2 = M1 · M2 · z E1 +E2
M 1 · z E1 = M 1 · z E1 −E2
M2
M 2 · z E2
základní princip (pouze!):
(M1 , E1 ) · (M2 , E2 ) = (M1 · M2 , E1 +E2 )
(M1 , E1 ) / (M2 , E2 ) = (M1 /M2 , E1 −E2 )
sčítání:
JPO 2005/6
M1 · z E1 + M2 · z E2 = ?
E3
c A. Pluháček 12.4.2006
základní operace
ii
Příklad 3:
(MIL-STD-1750A)
A ∼ F5 00 00 0616 = 1111 0101 0 . . . 0 0000 01102
D′ (M ) = 1,111 01012 ⇒ M = −0,000 10112
D′′ (E) = 1102
⇒ E = 1102 = 610
A = −0,000 10112 ⊳ 610 = −101,12 = −5,5 10
F5 00 00 0616
A8 00 00 0316
∼
∼
−5,5 10
−5,5 10
—
viz př. 1
obecně : M ·z E = M z j · z E −j = M ⊳ j · z E −j , popř.
M ·z E = M z −j · z E +j = M ⊲ j · z E +j
jinak:
(M, E) = (M ⊳ j, E −j), popř.
(M, E) = (M ⊲ j, E +j)
M ⊲ j −→ ? ztrátu přesnosti ?
? platnost vztahů ?
M ⊳ j −→
? přeplnění ?
JPO 2005/6
E4
c A. Pluháček 12.4.2006
základní operace
iii
sčítání (2):
• úprava na stejný exponent
(M1 , E1 ) + (M2 , E2 ) = (M1′ , E) + (M2′ , E) =
= (M1′ + M2′ , E),
neboť M1′ ·z E +M2′ ·z E = (M1′ + M2′ )·z E
• Pokud je to možné, provádět posuv mantisy příslušející
většímu exponentu vlevo (a tento exponent snižovat).
• Není-li to již možné, provádět posuv mantisy příslušející
většímu exponentu vpravo (a tento exponent zvyšovat).
zjednodušení algoritmu — vyloučit posuv mantis vlevo,
tzn. připustit pouze normalizovaný tvar:
• mantisa je posunuta co nejvíce vlevo, popř.
• exponent je nejmenší možný
JPO 2005/6
E5
c A. Pluháček 12.4.2006
základní operace
iv
Příklad 4:
(MIL-STD-1750A)
A8 00 00 0316
normalizovaný tvar čísla −5,5 10 (př. 1)
F5 00 00 0616 nenormalizovaný tvar čísla −5,5 10 (př. 3)
◮ F5 00 00 0616 = 1111 0101 0 . . . 0 0000 01102
◮ obraz mantisy v doplňkovém kódu = 1111 0101 . . .
◮ možný aritmetický posuv o 3 místa vlevo
sčítání (3): srovnat na větší z exponentů:
M1 ·z E1 + M2 · z E2 = (M1 · z E1 − E2 + M2 ) · z E2
= (M1 + M2 · z E2 − E1 ) · z E1
(M1 , E1 ) + (M2 , E2 ) = (M1 ⊲ (E2 −E1 ) + M2 , E2 )
= (M1 + M2 ⊲ (E1 −E2 ), E1 )
odčítání — analogicky:
(M1 , E1 ) − (M2 , E2 ) = (M1 ⊲ (E2 −E1 ) − M2 , E2 )
= (M1 − M2 ⊲ (E1 −E2 ), E1 )
JPO 2005/6
E6
c A. Pluháček 12.4.2006
rozklad operandů a složení výsledku
před „vlastníÿ operací je třeba operandy rozložit
po
operací je třeba
výsledek složit
Příklad 5:
(MIL-STD-1750A)
50000004 ∼ 10
E1 = 4
M1 = 0,1012
40000001 ∼ 1
E2 = 1
M2 = 0,12
M2′ = M2 ⊲ 3
M1′ = 0,1012
M2′ = 0,00012
M = 0, 101 + 0, 0001 = 0, 10112
E1 > E2
E1 − E2 = 3
E = E1
E=4
0101 1000 . . . 0000 0000 0100 2 = 58 00 00 0416 ∼
JPO 2005/6
E7
11
c A. Pluháček 19.4.2006 (opraveno)
úpravy řádové mřížky
Příklad 6:
(MIL-STD-1750A)
60000002 ∼ 3 40000002 ∼ 2 E1 = E2 = 2
M1 = 0,112
M2 = 0,12
E=2
0,11 + 0,1 = 1,01 = D′ (M ) ⇒ M < 0 ⇒ špatně!
rozšířená řádová mřížka pro mantisu:
00,11 + 00,1 = 01,01 = D∗ (01, 012 )
mantisa: 01, 01 ⊲ 1 = 00, 101 — po zkrácení: 0,101
exponent (zvýšení o 1): 2 + 1 = 3
výsledek: 50 00 00 03
∼
5=3+2
• rozšíření řádové mřížky, posuv (nebo „neposuvÿ) a následné
zkrácení lze provést mimo registry, tzn. v kombinačních
obvodech (sčítačka, obvod pro posuv a multiplexor)
• alternativní řešení: posuv operandů vpravo a příslušná
úprava výsledku
JPO 2005/6
E8
c A. Pluháček 12.4.2006
normalizace
Příklad 7:
(MIL-STD-1750A)
40000005 ∼ 16
8800004 ∼ −15
E1 = 5
E2 = 4
E1 > E2
∗
∗
D (M1 ) = 00,1000 D (M2 ) = 11,0001
E1 − E2 = 1
∗
posuv D (M2 ) o 1 místo vpravo
D∗ (M2 ) ← 11,10001 E = E1 = 5
00,100 0000... 0
11,100 0100... 0
0 0 , 0 0 0 0 1 0 0 . . . 0 −→ 04 00 00 05 ∼ 1
normalizovaný tvar:
40 00 00 01 ∼ 1
• Na konci každé operace je nutno výsledek
převést na normalizovaný tvar — normalizace.
• Pak lze výsledek použít jako operand.
JPO 2005/6
E9
c A. Pluháček 12.4.2006
normalizovaný obraz nuly
Příklad 8:
654321FB ∼ 0,065432116
E1 = −5
(MIL-STD-1750A)
0000000 ∼ 0
E2 = 0
E1 < E2
0,110 0101 0100 0011 0010 0001 ⊲ 5 =
= 0,000 0011 0010 1010 0001 1001 0000 1
přičíst 0 a složit
výsledek = 032A1900 ∼ 0,065430016
0,0654300 6= 0,0654321 + 0
E = E2 = 0
špatně!
Nula nesmí mít větší exponent než jiné číslo!
normalizovaný obraz nuly — nejmenší možný
exponent
Př. (MIL-STD-1750A): 0 ∼ 00 00 00 80
D′′ (E) = 8016 ⇒ E = −12810
mantisu lze posouvat, ale exponent nelze snižovat
JPO 2005/6
E 10
c A. Pluháček 12.4.2006
přetečení a nenaplnění
výsledek operace:
(M, E) ∼ A = M ·z E
požadováno:
Emin ≤ E ≤ Emax
např. −128 ≤ E ≤ 127
• E > Emax — přeplnění (nebo přetečení)
angl. overflow
• E < Emin — nenaplnění (nebo podtečení)
angl. underflow
E → −∞ ⇒ z E → 0
⇒A→0
JPO 2005/6
E 11
c A. Pluháček 12.4.2006
jiný formát
Příklad: formát označovaný dále BFLM
P(M )
A(E)
|M |
dvojková čárka (pro M i pro E)
mantisa:
přímý kód — znaménko a absolutní hodnota
exponent:
aditivní kód (kód s posunutou nulou)
pozn.:
Formát BFLM je jakýsi „kříženecÿ formátu IBM-360 a
dále diskutovaného formátu ANSI/IEEE Std 754-1985.
JPO 2005/6
E 12
c A. Pluháček 12.4.2006
přímý kód
Přímý kód:
P(X)
± absolutní hodnota
↑
znaménkový bit: 0 ∼ +
1∼ −
Př.:
X
+0,00
+0,01
+0,10
+0,11
−0,00
−0,01
−0,10
−0,11
JPO 2005/6
P(X)
000 ←kladná
001
nula
010
011
100 ←záporná
101
nula
110
111
E 13
e
6
eZ
u
e
− 12 Z
u
0
1
Z
2
e
e- X
1
Z
2
c A. Pluháček 12.4.2006
sčítání a odčítání v přímém kódu
A+B →A
nebo
A−B →A
sčítání ""bb ne
"
b
bzA = zB
"
bb""
ano ?
aA + aB → aA
zA
aA
zB
aB
...
...
...
...
odčítání ""bb
ano
- "zA = zBb
b
"
bb""
ne
?
aA − aB → aA
""bb
""bb 0
1
"
b - " přenos b
b
"
b přenos""
bb""
bb"
0
1
?
0 − aA → aA
znaménko A
zA → zA
|A|
znaménko B
|B|
?
?
přeplnění
JPO 2005/6
E 14
konec
c A. Pluháček 12.4.2006
násobení, dělení a posuvy v přímém kódu
znaménko:
+
+
−
−
+
−
+
−
+
−
⇒
−
+
0
0
1
1
0
1
0
1
0
1
1
0
⇒ XOR
absolutní hodnota — nezáporné číslo
násobení a dělení nezáporných čísel
již bylo diskutováno
aritmetický posuv:
• znaménkový bit se nemění;
• posouvá se část obsahující absolutní hodnotu;
• vypadne-li nenulový bit při posuvu doleva,
dochází k přeplnění;
• vypadne-li nenulový bit při posuvu doprava,
dochází k ztrátě přesnosti
JPO 2005/6
E 15
c A. Pluháček 12.4.2006
obvody pro posuv
obvod angl. nazývaný „barrel shifterÿ
JPO 2005/6
E 16
c A. Pluháček 12.4.2006
aditivní kód
A(X)
Aditivní kód:
6
Z e
A(X) = X + K
• K = 21 Z
• K = 21 Z − ε
K
−K ≤ X < Z − K
u
−K
Zde budeme uvažovat
K = 21 Z − 1, tzn.
Př.:
A(X) = X + 12 Z − 1
takže
− 12 Z + 1 ≤ X ≤
1
Z
2
první bit ⇒ znaménko
JPO 2005/6
e
E 17
X
-3
-2
-1
0
1
2
3
4
u
e- X
0 Z−K
A(X)
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
c A. Pluháček 12.4.2006
sčítání a odčítání v aditivním kódu
i
A(A + B) = A(A) + A(B) − K
A(A − B) = A(A) − A(B) + K
A(A + B) = A(A) + A(B) − 12 Z + 1
A(A − B) = A(A) − A(B) + 12 Z − 1
− 12 Z ≡ + 21 Z
(mod Z)
− 21 Z ≡ + 21 Z
(mod Z)
1
Z
2
∼ 100. . . 00
negace bitu v nejvyšším řádu
přeplnění:
sčítání:
stejná znaménka sčítanců
a jiné znaménko výsledku
odčítání: znaménka menšence a menšitele se liší a
liší se znaménka menšence a výsledku
(odvození analogické jako u doplňkového kódu)
JPO 2005/6
E 18
c A. Pluháček 12.4.2006
sčítání a odčítání v aditivním kódu
an
bn
pn
qn
sn
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
0
0
1
0
1
1
1
0
1
1
0
1
0
0
1
ii
qn = s n
qn
qn
qn
qn
qn
qn
6= sn
6= sn
6= sn
6= sn
6= sn
6= sn
qn = s n
over = qn ⊕ sn
JPO 2005/6
E 19
c A. Pluháček 12.4.2006
sčítání a odčítání v aditivním kódu
JPO 2005/6
E 20
iii
c A. Pluháček 12.4.2006
vlastnosti formátu BFLM
P(M )
A(E)
|M |
dvojková čárka (pro M i pro E)
• obraz nejmenšího možného exponentu = 0
⇒ normalizovaný obraz nuly = nula
(se znaménkem plus či mínus)
• porovnání: A ≥ B ⇐⇒ A − B ≥ 0
obrazy čísel A a B lze odečíst jako čísla
v přímém kódu a v pevné řádové čárce
• normalizovaný tvar nenulového čísla má v nejvyšším řádu
|M | vždy jedničku — tu lze ze zápisu vypustit
⇒ lze použít princip skryté jedničky
JPO 2005/6
E 21
c A. Pluháček 12.4.2006
formát ANSI/IEEE Std 754-1985
i
ANSI/IEEE Std 754-1985 — jednoduchý formát — 32b
±
8b
E+127
?
24 b
|M |
6 dvojková čárka (pro M i pro E)
8b
g
s
g=0af =0
g = 0 a f 6= 0
g ∈ h1, 254i
g = 255 a f = 0
g = 255 a f 6= 0
JPO 2005/6
23 b
f
(−1)s
(−1)s
(−1)s
(−1)s
NaN
E 22
·0
· f · 2−126
· (1 + f ) · 2g−127
·∞
c A. Pluháček 12.4.2006
ANSI/IEEE Std 754-1985
ii
Příklad:
−5,510 ∼ ?
5,510 = 101,12 = (1,011 ⊳ 10)2
f = 0,011 000 . . . 0002
g = (127 + 2)10 = 1000 00012
obraz čísla −5,510 :
1 1000 0001 011 000. . . 0002 =
= 1100 0000 1011 0000 0000 0000 0000 00002 =
= C0B0 000016
JPO 2005/6
E 23
c A. Pluháček 12.4.2006
ANSI/IEEE Std 754-1985
iii
ANSI/IEEE Std 754-1985 — dvojitý formát — 64b
g . . . 11b
f . . . 52b
g=0a
g=0a
g ∈ h1,
g = 2047
g = 2047
JPO 2005/6
f =0
f 6= 0
2046i
af =0
a f 6= 0
(−1)s
(−1)s
(−1)s
(−1)s
NaN
E 24
·0
· f · 2−1022
· (1 + f ) · 2g−1023
·∞
c A. Pluháček 12.4.2006

Podobné dokumenty

Normalizace - montessori

Normalizace - montessori Míru svobody a volnosti mu zpočátku určuje dospělý. Pomalu se uzdravuje a cesta k tomuto uzdravení spočívá v tom, že si dítě zvykne na určitou námahu v prostředí, které je vhodné pro jeho potřeby. ...

Více

Úvod do číslicové techniky - Univerzita Tomáše Bati ve Zlíně

Úvod do číslicové techniky - Univerzita Tomáše Bati ve Zlíně 4. šestnáctková (hexadecimální) číselná soustava • základem je číslo16 • soustava používá šestnáct znaků (číslic a písmen, znaků): 0, 1,…,9, A, B, C, D, E, F • jedna číslice hexadecimálního zápisu ...

Více

Technická specifikace Premium SMS

Technická specifikace Premium SMS 5. Zaslání odpovědi SK až do výše 20 EUR (MT billing) Po přijetí požadavku je nutné vygenerovat text odpovědní SMS pro zákazníka dle následujícího schématu: 1/ odpověď musí mít nastavený content-ty...

Více

IEEE 1101,2

IEEE 1101,2 add, addi, sub vs. addu (add unsigned), addiu a subu (MIPS)

Více

uživatelská příru

uživatelská příru Někdy není možné kvůli nedostatku místa nebo nepřístupnosti použít přijímací kleště pro identifikaci kabelu ve svazku. Pro tuto identifikaci je také možné pohodlně použít stetoskopickou anténu. Fir...

Více