Císelné soustavy v mikroprocesorové technice
Transkript
Ú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
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...
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
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...
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...
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
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...
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...