Císelné soustavy v mikroprocesorové technice

Transkript

Císelné soustavy v mikroprocesorové technice
Ústav radioelektroniky
Vysoké učenı́ technické v Brně
Čı́selné soustavy v mikroprocesorové technice
Mikroprocesorová technika a embedded systémy
Přednáška 8
doc. Ing. Tomáš Frýza, Ph.D.
listopad 2012
Obsah přednášky
Čı́selné soustavy v mikroprocesorové technice
Vyjádřenı́ záporných a desetinných čı́sel
Formát s plovoucı́ řádovou čárkou
Obsah přednášky
Čı́selné soustavy v mikroprocesorové technice
Vyjádřenı́ záporných a desetinných čı́sel
Formát s plovoucı́ řádovou čárkou
Dekadická, hexadecimálnı́ a binárnı́ čı́selná soustava
I
Dekadická (desı́tková) soustava:
I
I
I
I
I
I
Hexadecimálnı́ (šestnáctková) soustava se předevšı́m využı́vá pro přehlednějšı́
zápis binárnı́ch čı́sel:
I
I
I
I
I
I
I
I
I
základ soustavy: 2,
využı́vá symboly: 0, 1,
označenı́ soustavy pomocı́ sufixu 11002 , nebo prefixu 0b1010,
kladný rozsah hodnot: 0 až 2n − 1,
znaménkový rozsah hodnot: −2n−1 až 2n−1 − 1.
Uvažujme bitovou reprezentaci d = (d7 , d6 , . . . , d1 , d0 ):
I
I
I
základ soustavy: 16,
využı́vá symboly: 0, 1, 2, . . ., 9, A, B, . . ., F,
označenı́ soustavy pomocı́ sufixu 2BA616 , 4F6H, prefixů 0xD2, $25A4,
kladný rozsah hodnot: 0 až 16n − 1.
Binárnı́ (dvojková) soustava se použı́vá v čı́slicové a mikroprocesorové technice
k reprezentaci hodnot:
I
I
základ soustavy: 10,
využı́vá symboly: 0, 1, 2, . . ., 9,
označenı́ soustavy pomocı́ sufixu 1 10010 ,
kladný celočı́selný rozsah hodnot: 0 až 10n − 1, kde n je počet použitých symbolů,
znaménkový rozsah hodnot: −10n−1 až 10n−1 − 1,
bit d7 označuje most significant bit (MSB),
bit d0 označuje least significant bit (LSB).
V binárnı́ soustavě jsou hodnoty reprezentovány ve tvaru s tzv. pevnou řádovou
čárkou (Fixed-point), nebo s plovoucı́ řádovou čárkou (Floating-point):
I
I
Fixed-point: celé čı́sla (neznaménková, znaménková), zlomkový tvar.
Floating-point (IEEE 754): single, double, extended precision.
Převod mezi čı́selnými soustavami
Tabulka: Převod hodnot mezi dekadickou, binárnı́ a hexadecimálnı́ soustavou.
Dekadická
Binárnı́
Hexadecimálnı́
Dekadická
Binárnı́
Hexadecimálnı́
0
1
2
3
4
5
6
7
8
9
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
···
1010
1011
1100
1101
1110
1111
10000
10001
10010
···
A
B
C
D
E
F
10
11
12
···
I
Pro převod hodnoty ze soustavy se základem X do jiné se základem Y lze použı́t
metody postupného dělenı́ (continuous dividing) a násobenı́ (continuous
multiplying):
I
I
dělenı́ hodnot nalevo od řádové čárky hodnotou Y,
násobenı́ hodnot napravo od řádové čárky hodnotou Y.
Převod z dekadické do binárnı́ soustavy – celá čı́sla
Přı́klad
Převed’te dekadickou hodnotu 25 do binárnı́ soustavy.
Řešenı́
Metoda postupného dělenı́ základem binárnı́ soustavy.
25
12
6
3
1
:
:
:
:
:
2
2
2
2
2
=
=
=
=
=
12,
6,
3,
1,
0,
zbytek
zbytek
zbytek
zbytek
zbytek
1
0
0
1
1
20
21
22
23
24
LSB
MSB
Výsledek: 110012 .
Pozn.: Algoritmus je ukončen po dosaženı́ hodnoty 0.
Převod z dekadické do binárnı́ soustavy – desetinná část
Přı́klad
Převed’te dekadickou hodnotu 0,375 do binárnı́ soustavy.
Řešenı́
Metoda postupného násobenı́ základem binárnı́ soustavy.
0,375
0,75
0,5
·
·
·
2
2
2
=
=
=
0,75
1,5
1,0
2−1
2−2
2−3
prvnı́ bit po řádové čárce
poslednı́ bit
Výsledek: 0,0112 .
Pozn.: Algoritmus lze ukončit pokud je desetinná část rovna 0.
Převod z dekadické do binárnı́ soustavy – rychlá metoda
Přı́klad
Převed’te dekadickou hodnotu 53 do binárnı́ soustavy pomocı́ rychlé metody.
Řešenı́
−
−
−
−
53
32
21
16
5
4
1
1
0
tj. 25
tj. 24
tj. 22
tj. 20
→
ukončenı́ algoritmu
25 + 24 + 22 + 20 = 1·25 + 1·24 + 0·23 + 1·22 + 0·21 + 1·20 Výsledek: 1101012 .
Vzájemný převod mezi hexadecimálnı́ a dekadickou soustavou
I
Algoritmus převodu z hexadecimálnı́ do dekadické soustavy:
I
Jednotlivé symboly lze váhovat obdobně jako u binárnı́ soustavy.
Přı́klad
Rozklad čı́sla 35616 .
Řešenı́
(3·162 ) + (5·161 ) + (6·160 ) = 768 + 80 + 6 = 85410 .
Přı́klad
Rozklad čı́sla 2AF16
Řešenı́
(2·162 ) + (10·161 ) + (15·160 ) = 512 + 160 + 15 = 68710 .
Vzájemný převod mezi hex. a dekadickou soustavou
I
Algoritmus převodu z dekadické do hexadecimálnı́ soustavy:
I
Obdobný postup jako u převodu z dekadické do binárnı́ soustavy, tj. rozdělenı́ čı́sla na
celou a ”desetinnou” část.
(a) Celá část se dělı́ základem soustavy (tj. 16) a zbytek po dělenı́ udává hodnoty od
”desetinné” čárky směrem k MSB.
(b) Desetinná část se násobı́ základem soustavy a přenos udává hodnotu od ”desetinné”
čárky směrem k LSB.
Přı́klad
Převed’te hodnotu 423,3410 do hexadecimálnı́ soustavy.
Řešenı́
(a) Metoda postupného dělenı́ základem hexadecimálnı́ soustavy.
423
26
1
:
:
:
16
16
16
Výsledek: 1A716 .
=
=
=
26,
1,
0,
zbytek 7
zbytek 10
zbytek 1
160
161
162
LSB
MSB
Vzájemný převod mezi hex. a dekadickou soustavou
Řešenı́
(b) Metoda postupného násobenı́ desetinné části základem hexadecimálnı́ soustavy.
0,34 ·
16
=
5,44
16−1
prvnı́ symbol po řádové čárce
0,44 ·
16
=
7,04
16−2
0,04 · 16
=
0,64
16−3
0,64 · 16
=
10,24
16−4
0,24 · 16
=
3,84
16−5
···
lze pokračovat, dokud nenı́ desetinná část násobenı́ rovna nule
Výsledek přibližně: 1A7,570A316 .
Vzájemný převod mezi hexadecimálnı́ a binárnı́ soustavou – rychlý
postup
I
Algoritmus převodu z hexadecimálnı́ do binárnı́ soustavy: Každý symbol
v hexadecimálnı́ soustavě se převádı́ odděleně a představuje právě čtveřici bitů.
Přı́klad
Převed’te hodnotu −6F,AH do binárnı́ soustavy.
Řešenı́
−6F,A16 = − 0110
I
1111 , 10102
Algoritmus převodu z binárnı́ do hexadecimálnı́ soustavy: Binárnı́ čı́slo se rozdělı́
na čtveřice bitů (tj. na nibly) a ty se převádı́ nezávisle na ostatnı́ch.
Přı́klad
Převed’te binárnı́ hodnotu 0b11,000011001 do hex. soustavy.
Řešenı́
11,0000110012 = 0011 , 0000
1100
10002 = 3,0C816
Obsah přednášky
Čı́selné soustavy v mikroprocesorové technice
Vyjádřenı́ záporných a desetinných čı́sel
Formát s plovoucı́ řádovou čárkou
Vyjádřenı́ záporných čı́sel
I
I
Hodnota binárnı́ho čı́sla je v mikroprocesorové technice vyjádřena určitým počtem
bitů. Počet bitů určuje rozsah hodnot (např.: 8 bitů: 0 až 255).
U znaménkových čı́sel informuje zda je hodnota kladná, nebo záporná, tzv.
znaménkový bit na pozici MSB
I
I
0 ⇔ kladná hodnota; 1 ⇔ záporná hodnota.
V čı́slicových systémech se k vyjádřenı́ záporných celých čı́sel použı́vá
VÝHRADNĚ dvojkový doplněk (Two’s Complement).
Pozn.: Dvojkový doplněk představuje čı́slo opačné k dané hodnotě.
Dvojkový doplněk
I
Algoritmus pro vytvořenı́ dvojkového doplňku:
(a) negace všech bitů (tj. tvorba jednotkového doplňku),
(b) přičı́st 1.
Přı́klad
−2 + 3 = ?
Řešenı́
(a) +2: 0010 → 1101
(b) 1101 + 0001 = 1110: −2
+
1110
0011
1 0001
−210
310
110
Dvojkový doplněk
I
Rychlá metoda tvorby dvojkového doplňku:
(1) opisovat všechny nulové bity od LSB směrem k MSB,
(2) prvnı́ jedničkový bit opsat,
(3) zbývajı́cı́ bity negovat.
−1
−2
−3
−4
−5
1111
0
0000
1110
1
0001
0010
1101
0011
1100
3
0100
1011
−6
2
0101
1010
1001
−7
1000
−8
0110
0111
4
5
6
7
Obrázek: Grafická interpretace rozsahu binárnı́ch hodnot.
Početnı́ operace se znaménkovými čı́sly
I
Aritmetické bitové operace pro záporná čı́sla ve dvojkovém doplňku platı́ stejně
jako pro kladná čı́sla.
I
Součet dvou kladných hodnot (5bitová reprezentace):
01001
+00100
01101
I
9
4
13
Odečı́tánı́ znaménkových čı́sel vyjádřených ve dvojkovém doplňku se provádı́
pomocı́ sčı́tánı́:
(1) k menšiteli vytvořit dvojkový doplněk,
(2) tento doplněk přičı́st k menšenci.
Př.: 9 − 4 = 9 + (−4) = ?
00100 (+4):
11011
+00001
11100
01001
+11100
1 00101
9
+(−4)
5
Neznaménková/znaménková celá čı́sla
I
Neznaménková (unsigned) celá čı́sla reprezentujı́ hodnoty od 0 do 2n −1, kde n
udává počet bitů.
I
Znaménková čı́sla (signed) jsou v čı́slicové technice vyjádřena ve tvaru dvojkového
doplňku a reprezentujı́ hodnoty od −2n−1 až 2n−1 −1.
Při použitı́ celočı́selného typu (signed, unsigned) mohou nastat dva problémy:
I
I
I
přetečenı́ při součtu (výsledek je obecně vyjádřen n+1 bity),
přetečenı́ při násobenı́ (výsledek je obecně vyjádřen 2·n bity).
Odstraněnı́ problémů s přetečenı́m u (ne)znaménkových čı́sel
I
Potřebu většı́ho počtu bitů pro vyjádřenı́ výsledku než majı́ operandy
aritmetických operacı́ je možné odstranit:
(1)
(2)
(3)
(4)
saturacı́ výsledku,
použitı́m zvýšené přesnosti pro výsledek (většı́ počet bitů),
použitı́m zlomkového formátu,
použitı́m formátu plovoucı́ řádové čárky.
(1a) Saturace výsledků u neznaménkových čı́sel:
I
I
pokud A · B ≤ 2n − 1, pak výsledek = A · B,
pokud A · B > 2n − 1, pak výsledek = 2n − 1.
(1b) Saturace výsledků u znaménkových čı́sel:
I
I
I
pokud −2n−1 ≤ A · B ≤ 2n−1 − 1, pak výsledek = A · B,
pokud A · B > 2n−1 − 1, pak výsledek = 2n−1 − 1,
pokud −2n−1 > A · B, pak výsledek = −2n−1 .
Odstraněnı́ problémů s přetečenı́m u (ne)znaménkových čı́sel
(2) Rozšı́řenı́ počtu bitů pro reprezentaci početně korektnı́ho výsledku aritmetické
operace přinášı́ několik nevýhod:
I
I
I
zvýšenı́ pamět’ové náročnosti (použitı́ většı́ho počtu registrů/pamět’ových pozic),
v přı́padě, že výsledek aritmetické operace je následně operandem dalšı́ operace, je
nutné data upravit do původnı́ho počtu bitů,
následné snı́ženı́ počtu bitů je nutné také v přı́padě vyslánı́ vypočtené hodnoty do D/A
převodnı́ku.
(3) Použitı́ zlomkového tvaru (formátu) zabraňuje přetečenı́ při násobenı́, protože
platı́ |A · B| < min(|A|, |B|).
Zlomkový tvar
I
Zlomkový tvar nabývá hodnot < −1, 1 − 2−(n−1) >
pro n = 8 je MAX = 0, 9921875,
pro n = 16 je MAX = 0, 99996948242188.
I
Převod hodnoty zlomkového tvaru do dekadické soustavy; 32bitové vyjádřenı́
d = (d31 , d30 , . . . , d0 ):
v = −d31 · 20 +
31
X
d31−n · 2−n
n=1
I
Znaménkový bit má váhu −1, ostatnı́ bity majı́ váhu záporných mocnin, tj. 1/2,
1/4, 1/8, . . .
Formáty s pevnou řádovou čárkou
Obrázek: Formáty s pevnou řádovou čárkou.
Obsah přednášky
Čı́selné soustavy v mikroprocesorové technice
Vyjádřenı́ záporných a desetinných čı́sel
Formát s plovoucı́ řádovou čárkou
Čı́selná reprezentace s plovoucı́ řádovou čárkou
I
I
Pro reprezentaci desetinných čı́sel a pro zvýšenı́ rozsahu je použita reprezentace
s plovoucı́ řádovou čárkou (Floating-point).
Základnı́ formáty dle standardu ANSI/IEEE 754:
I
I
I
I
I
jednoduchá přesnost (Single precision, SP): 32 bitů,
dvojitá přesnost (Double precision, DP): 64 bitů,
rozšı́řená přesnost (Extended precision, EP): 80 bitů.
Formát IEEE floating-point reprezentuje běžné hodnoty, NaN (not a number)
a nekonečno.
Formát binárnı́ho čı́sla se skládá ze třı́ částı́ (konkrétnı́ přı́klad pro SP):
I
I
I
znaménkový bit: S – 1 bit (31),
exponent: E – 8 bitů (30:23),
mantisa: M – 23 bitů (22:0).
Floating-point, jednoduchá přesnost
I
Znaménkový bit = 1 ⇔ záporné čı́slo:
I
I
Mantisa (fraction):
I
I
I
záporná čı́sla tedy nejsou vyjádřena ve dvojkovém doplňku; čı́sla opačná se lišı́ pouze
znaménkovým bitem.
reprezentuje nejdůležitějšı́ bity kódovaného čı́sla,
hodnota je normována ⇒ desetinná čárka je přesunuta za prvnı́ nenulovou čı́slicı́
(v binárnı́ soustavě za prvnı́ jedničku).
Exponent:
I
I
může vyjádřit jak kladný, tak i záporný exponent,
k dané hodnotě je vždy přičtena konstanta, tzv. bias 2nexp−1 − 1, kde nexp je počet
bitů pro vyjádřenı́ exponentu, proto je výsledná hodnota exponentu ve formátu
floating-point vždy kladná. Bias pro SP: 12710 .
31 30
23 22
sign exponent
8b
0
fraction
23 b
Obrázek: Struktura formátu s plovoucı́ řádovou čárkou, jednoduchá přesnost.
Floating-point, jednoduchá přesnost
Přı́klad
Vyjádřete desetinné čı́slo +6,62510 ve tvaru s plovoucı́ řádovou čárkou, jednoduchá
přesnost.
Řešenı́
(1) Přepsat dané čı́slo do bin. soust.: 6,625 = 110,1012 .
(2) Normovaná podoba čı́sla: 110,101 → 1,10101 · 22 .
(3) 23bitová mantisa: 1010 1000 0000 0000 0000 000.
(4) Exponent: 2 + 127 = 12910 = 1000 00012 .
(5) Znaménkový bit: 0 ⇔ kladné čı́slo.
Výsledek: 0100 0000 1101 0100 0000 0000 0000 00002 .
Floating-point, jednoduchá přesnost
Přı́klad
Podle standardu IEEE 754 přepište čı́slo 0100 1111 1001 0101 0000 0010 1111 1001
z plovoucı́ řádové čárky do dekadické podoby.
Řešenı́
(1) Znaménkový bit: 0 ⇔ kladné čı́slo.
(2) Exponent: 1001 11112 − 12710 = 159 − 127 = 32.
(3) 1,0010 1010 0000 0101 1111 001 · 232 = 1 0010 1010 0000 0101 1111 0010
0000 0000.
Výsledek: 5 000 000 00010 .
Pozn.: Ve dvojkovém doplňku lze pomocı́ 32 bitů vyjádřit reálné hodnoty od
−2 147 483 648 do 2 147 483 647.
Floating-point, dvojitá přesnost
63 62
sign
52 51
0
exponent
fraction
11 b
52 b
Obrázek: Struktura formátu s plovoucı́ řádovou čárkou, dvojitá přesnost.
I
Formát s dvojitou přesnostı́ (double precision, 64 bitů) se skládá ze třı́ částı́
I
I
I
Znaménkový bit (63).
11bitový exponent (62:52).
52bitová mantisa (51:0).
I
Reálná hodnota je vyjádřena vztahem (−1)sign · 2exp−bias · 1, mantisa, kde
posunutı́ bias = 2nexp−1 − 1, tj. pro double precision bias=1 023 (pro SP: 127).
I
Rozsah hodnot ležı́ v intervalu ±3,6·10308 .
Floating-point, dvojitá přesnost
Přı́klad
Podle standardu IEEE 754 přepište čı́slo z plovoucı́ řádové čárky do dekadické podoby
I
1
I
100 0001 1001
I
1101 0110 1111 0011 0100 0101 0100 0000 0000 0000 0000 0000 0000
Řešenı́
(1) Záporné čı́slo.
(2) Exponent: exp=1 049−1 023=26.
(3) Mantisa: 1,1101 0110 1111 0011 0100 0101 0100 . . . · 2exp .
Výsledek: −123 456 789.
Floating-point, dvojitá přesnost
Přı́klad
Vyjádřete desetinné čı́slo +255,96875 ve tvaru s plovoucı́ řádovou čárkou (dvojitá
přesnost).
Řešenı́
(1) Kladné čı́slo: sign=0.
(2) Přepsat hodnotu do binárnı́ soustavy: 255,96875 = 0b1111 1111,1111 1.
(3) Normovaná podoba: 1,111 1111 1111 1 ·27 .
(4) Exponent: exp=7 + 1 023 = 1 030 = 0b100 0000 0110.
Výsledek:
I
0
I
100 0000 0110
I
111 1111 1111 1 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

Podobné dokumenty

Mikroprocesorová technika, prednáška c. 6

Mikroprocesorová technika, prednáška c. 6 Bootovacı́ část (anglicky: Boot loader section): zde může být uložen program, který umožňuje přeprogramovánı́ aplikačnı́ (i bootovacı́) části Flash, Každá část má odlišnou úrov...

Více

GPU akcelerace aplikací v METACentru

GPU akcelerace aplikací v METACentru Výkon GPU lze využı́t v mnoha výpočetně náročných aplikacı́ch mnoho aplikacı́ využı́vaných v METACentru umı́ GPU

Více

Vyškově na Žatecku - eDen-X.cz

Vyškově na Žatecku - eDen-X.cz Pridej odkaz mezi placene odkazy Da rky pro Vase zdravı Origina lnı da rky, ktere jinde nenajdete. Same hity za super ceny od dovozce! Dvere Oslovte zdarma svou popta vkou na dvere desıtky firem! D...

Více

Bloková struktura mikrokontroléru

Bloková struktura mikrokontroléru popisuje jak má čı́slicový systém pracovat a z jakých hlavnı́ch částı́ by se měl skládat: řı́dicı́ jednotka, paměti, I/O obvody, zásadnı́ myšlenka von Neumannovy architektury je použi...

Více

file 4 MB

file 4 MB 1/T2 = Fa Fb τex (∆ω)2 1/T2 = (4/9)vτD (∆ωr)2 Může platit obojí zároveň?

Více

Základní chemické zákony

Základní chemické zákony Výsledek měřenı́ - počet platných mı́st je dán přesnostı́ měřenı́. Nuly mezi desetinnou čárkou a prvnı́ nenulovou čı́slicı́ nejsou platné čı́slice. 0,000 124; 0,0105 002

Více

Velmi užitečný text o dlouhých číslech od RNDr. Tomáše Holana.

Velmi užitečný text o dlouhých číslech od RNDr. Tomáše Holana. Proto nám stačı́, když pro výpočet budeme počı́tat a přesnostı́ na 1004 desetinných mı́st. Čı́sla budeme representovat jako čı́sla s pevnou řádovou čárkou (všechna budou mı́t 1004 de...

Více

Lineární a adaptivní zpracování dat

Lineární a adaptivní zpracování dat je pak představen základní koncept lineární filtrace, jsou objasněny rozdíly mezi různými přístupy ke klasifikaci typů filtrů a jsou také ukázány některé návrhové metody. Třetí kapitola se věnuje k...

Více