ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
OBSAH Čísla a číslice.......................................................................................................................... 2 Desítková (dekadická ) číselná soustava ................................................................................ 2 Tvorba libovolné číselné soustavy ......................................................................................... 3 Převody čísel mezi číselnými soustavami ............................................................................. 6 Převod čísel z dekadické soustavy do libovolné jiné ......................................................... 6 Převod čísel z libovolné soustavy do dekadické ................................................................ 7 Převody čísel mezi příbuznými číselnými soustavami ...................................................... 7 Početní operace s binárními čísly........................................................................................... 9 Kód BCD.............................................................................................................................. 11 Grayův kód ........................................................................................................................... 11 Literatura .............................................................................................................................. 13
V Ostravě 15.1.2012
Ing. Pavel Bachura
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Čísla a číslice Číslo je abstraktní entita užívaná pro vyjádření množství nebo pořadí. (Možno zapomenout). Číslice jsou matematické symboly sloužící k zápisu čísel. (Nutno pamatovat!) Příklady: 7 – číslice i číslo (jednociferné – má jednu číslici – cifru). 27 – pouze číslo (dvouciferné – má dvě číslice – cifry).
Desítková (dekadická ) číselná soustava Desítková (dekadická, decimální) soustava má základ číslo 10 a také 10 číslic: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Všimněme si, že samotný základ číselné soustavy mezi číslicemi není. To platí všeobecně. Největší číslice každé (poziční)1 číselné soustavy je vždy o jedničku menší než její základ. Každá číslice v čísle má jinou váhu danou její pozicí (řádem). Proto desítková soustava patří do kategorie tzv. pozičních soustav. Příklad:
12 356,428 řád desetitisíců
řád tisíců
řád stovek
řád desítek
řád jednotek
řád desetin
řád setin
řád tisícin
POZOR ! Název desítková (dekadická) soustava není odvozen od počtu číslic! Název každé číselné soustavy je odvozen od jejího základu r (báze)2. Tato skutečnost je dobře patrná z tzv. Hornerova schématu, podle kterého je možno každé číslo rozepsat. Příklad: 12 356,428 = 1 · 10 4 + 2 · 10 3 + 3 · 102 + 5 · 10 1 + 6 · 10 0 + 4 · 10 -1 + 2 · 10 -2 + 8 · 10 -3 kde základ číselné soustavy r = 10. Připomeňme: a) 100 = 1, neboť každé číslo (s výjimkou nuly) umocněné na nultou je jedna. Výraz 00 není definován3. 1 1 = 0,01 b) 10 −2 = 2 = 10 100 1
Tvrzení platí pro zde probírané poziční číselné soustavy, které mají základ přirozené číslo, s výjimkou soustavy unární se základem 1. Tu používá např. servírka při zápisu čárek k ceně piva na účtence v restauraci. Zde má každá čárka stejnou váhu bez ohledu na její pozici, tedy bez ohledu na to, jak vypadáme po prvním pivu nebo po patnáctém. Také římské číslice jsou nepoziční soustava. 2 Označení r je podle anglického radix – základ (původně latinsky – kořen). 3 Nechci se pouštět do exaktních matematických důkazů, jen si zkuste na kalkulačce pomocí funkce yx postupně umocňovat nějaké kladné číslo y ≠ 0 kladným resp. záporným exponentem x blížícím se k nule (0,5, 0,1, 0,01, 0,0000001, ... resp. –0,5, –0,1, –0,01, –0,000001, ...) a uvidíte, jak se výsledky přibližují k jedničce.
Strana 2 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Pro snazší pochopení budeme dále pracovat pouze s celými čísly, i když uvedené principy lze aplikovat i na čísla desetinná. U Hornerova schéma je důležité umět správně pojmenovat jednotlivé symboly:
exponenty (mocnitelé) základu
4
3
2
1
0
10
číselné koeficienty
základ číselné soustavy r
Tvorba libovolné číselné soustavy V technické praxi velmi často používáme i jiné poziční číselné soustavy než dekadickou. Nejdůležitější z nich je binární (dvojková) soustava a v těsném závěsu za ní hexadecimální (šestnáctková) soustava. Pro lepší pochopení dalších souvislostí ukážeme také méně používané soustavy - osmičkovou (oktalovou) a čtyřkovou, případně i jiné. Pokud pracujeme s více číselnými soustavami, je nutné tyto soustavy při zápisu čísel rozlišovat. To se zpravidla dělá pomocí dolního indexu za příslušným číslem. Příklad: 956 v dekadické soustavě zapíšeme 956 10 nebo 956 DEC 274 v oktalové (osmičkové) soustavě zapíšeme 274 8 nebo 274 OCT 1011011 v binární (dvojkové) soustavě zapíšeme 1011011 2 nebo 1011011BIN 70 v hexadecimální (šestnáctkové) soustavě zapíšeme 70 16 nebo 70 HEX případně 70H Porozumět tvorbě číselných soustav je velmi snadné, pokud vyjdeme z následujících bodů: a) Na chvíli zapomeneme, že číslo 10 se čte deset. Jak ho tedy číst? Např. 6 + 4 = 10 přečteme „šest plus čtyři je nula a jednička postupuje do vyššího řádu“. b)
Největší číslice každé poziční číselné soustavy je vždy o jedničku menší než její základ. Tedy: Desítková soustava má základ číslo 10 a také 10 číslic – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Dvojková soustava má základ číslo 2 a také 2 číslice4 – 0, 1. Čtyřková soustava má základ číslo 4 a také 4 číslice – 0, 1, 2, 3. Pětková5 soustava má základ číslo 5 a také 5 číslic – 0, 1, 2, 3, 4.
4
Pro číslice dvojkové soustavy používáme často název bit z anglického sousloví „binary digit“ (dvojková číslice; také angl. bit = drobek, kousek). 1 bit je základní a současně nejmenší jednotkou informace, používaná především v číslicové a výpočetní technice. Může nabývat pouze dvou hodnot (logických stavů) 0 a 1. Značí se malým písmenem b, např. 16 b, ale může se také objevit i označení bit, např. 16 bit (16 bitů). 5
Pětková soustava se v technické praxi nevyužívá. Přidal jsem ji proto, že žáci zpravidla číslo 5 velmi dobře znají a je jim tedy blízké.
Strana 3 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Osmičková soustava má základ číslo 8 a také 8 číslic – 0, 1, 2, 3, 4, 5, 6, 7. Šesnáctková soustava má základ číslo 16 a také 16 číslic – 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Pozor! Nejsou zde žádná písmena! Jen číslice! c)
Pokud k nějaké číslici libovolné poziční číselné soustavy přičteme jedničku, a výsledkem je opět číslice této číselné soustavy, napíšeme ji.
d)
Pokud k největší číslici libovolné poziční číselné soustavy přičteme jedničku, napíšeme znovu nulu a jednička postupuje do vyššího řádu (vzniká přenos do vyššího řádu, do vyšší pozice; „jedna jde dál“ – podržet palcem levé ruky).
Příklady přičítání jedničky v různých číselných soustavách jsou v tabulce 1. Tab. 1.1 Příklady přičítání jedničky v různých číselných soustavách Příklady
Důležité mezivýpočty a komentáře
910 110 1010
3910 110 4010
9910 110 10010
1 + 9 je 0 a jedna jde dál (9 je největší číslice) 1 + 3 jsou 4 (přenos do vyššího řádu nevzniká, je 0) 1 + 0 je 1 (přenos do vyššího řádu nevzniká, je 0)
45 15 105
245 15 305
445 15 1005
1 + 4 je 0 a jedna jde dál (4 je největší číslice) 1 + 2 jsou 3 (přenos do vyššího řádu nevzniká, je 0) 1 + 0 je 1 (přenos do vyššího řádu nevzniká, je 0)
12 12 102
112 12 1002
1012 12 1102
1 + 1 je 0 a jedna jde dál (1 je největší číslice) 1 + 0 je 1 (přenos do vyššího řádu nevzniká, je 0)
34 14 104
234 14 304
334 14 1004
1 + 3 je 0 a jedna jde dál (3 je největší číslice) 1 + 2 jsou 3 (přenos do vyššího řádu nevzniká, je 0) 1 + 0 je 1 (přenos do vyššího řádu nevzniká, je 0)
78 18 108
278 18 308
778 18 1008
1 + 7 je 0 a jedna jde dál (7 je největší číslice) 1 + 2 jsou 3 (přenos do vyššího řádu nevzniká, je 0) 1 + 0 je 1 (přenos do vyššího řádu nevzniká, je 0)
F16 116 1016
9F16 116 A016
FF16 116 10016
1 + F je 0 a jedna jde dál (F je největší číslice) 1 + 9 je A (přenos do vyššího řádu nevzniká, je 0) 1 + 0 je 1 (přenos do vyššího řádu nevzniká, je 0)
POZOR ! Výrazy 10, 101, 30 a pod. čteme „deset“, „sto jedna“, „třicet“ pouze v dekadické soustavě! V ostatních soustavách čteme „jedna nula“, „jedna nula jedna“, „tři nula“, a pod. Na základě popsaných principů můžeme snadno sestavit tabulku třeba prvních 25 čísel libovolné číselné soustavy. Vybírám jen číselné soustavy používané v číslicové technice:
V praxi se ještě vyskytuje soustava dvanáctková (r = 12, 120 = 1, 121 = 12 – tucet, 122 = 144 – tucet tuctů – veletucet) a šedesátková (r = 60, 600 = 1, 601 = 60 – kopa, 602 = 3600 – kopa kop – velekopa).
Strana 4 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Tab. 1.2 Číselné soustavy s různými základy r (a kódy) Číselné soustavy s různými základy r dec r = 10 * 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 11 12 13 14 * 15 * 16 17 18 19 20 21 22 23 24 25 ··· * 255
čtyř. r=4
bin r=2 * * * *
0 1 10 11 100 101 110 * 111 1000 1001 * 1010 1011 1100 1101 1110 * 1111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 ··· * 11111111
* * * * *
0 1 2 3 10 11 12 13 20 21 22 23 30 31 32 33 100 101 102 103 110 111 112 113 120 121 ··· 3333
oct r=8 * * * * * * * * *
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 31 ··· 377
hex r = 16 * 0 * 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * A B C D E * F * 10 11 12 13 14 15 16 17 18 19 ··· * FF
Kódy BCD
GRAY
Všechna čísla v jednom každém řádku tabulky mají stejnou velikost, jsou v totožném bodě na reálné ose, jsou jen vyjádřena v různých číselných soustavách. Například číslo 11012 je binární ekvivalent6 dekadického čísla 1310. Matematický zápis: 11012 = 1310. V technické praxi ale říkáme poněkud nepřesně, že 11012 je „binární třináctka“. Čísla označená hvězdičkou musí každý technik v ČT a ICT dostat „pod kůži“, tzn. má-li například napsat binární či hexadecimální ekvivalent dekadického čísla 1510, musí reagovat ihned! Zkuste si to!
6
Ekvivalentní jsou např. dvě různé věci, které se ale shodují v dané situaci rozhodujících vlastnostech. Ekvivalenty jsou tudíž, přes svou rozdílnost, zaměnitelné. Například ve starším elektronickém zařízení můžeme nahradit starý typ tranzistoru jeho novodobým ekvivalentem. Je nám lhostejný materiál, tvar, barva a velikost pouzdra, typové označení, často i uspořádání vývodů, ale musí mít alespoň přibližně stejné elektrické parametry. Např. maximální kolektorový proud ICmax, maximální napětí mezi kolektorem a emitorem UCEmax, maximální ztrátový výkon Pmax a pod.
Strana 5 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Číslo 255DEC = 11111111BIN = FFHEX jsem do tabulky přidal pro jeho velmi významné postavení v číslicové a výpočetní technice. Je to největší číslo, které lze vyjádřit pomocí 1 B (byte, bajt), to jest tzv. slabiky, která obsahuje právě 8 bitů. Jak jsem ho převedl, uvidíme v následující kapitole. Binární čísla bývají často vpředu doplněna nulami na 4 respektive 8 bitů, tedy ½ bajtu nebo celý bajt. Např. 112 zapisujeme 00112 respektive 000000112. Proč je tomu tak, pochopíme lépe při další práci s binárními čísly. Podstatné je, že hodnota čísel se tím nemění. Poslední dva sloupce tabulky jsou připraveny pro učivo z dalších kapitol. Pokud si děláte své výpisky, doporučuji je teď přidat a později vyplnit.
Převody čísel mezi číselnými soustavami Převod čísel z dekadické soustavy do libovolné jiné Dekadické číslo dělíme celočíselně se zbytkem základem nové číselné soustavy tak dlouho, dokud nedělíme nulu. Zbytky po dělení seřazené zdola nahoru potom dávají číslo v nové číselné soustavě. Příklady: Převod čísla 19710 z desítkové soustavy do dvojkové celočíselné dělení 197 : 2 = 98 98 : 2 = 49 49 : 2 = 24 24 : 2 = 12 12 : 2 = 6 6:2=3 3:2=1 1:2=0 0:2=0
zbytek po dělení 1 0 1 0 0 0 1 1 0
směr čtení převedeného čísla
výsledek převodu
19710 = 110001012
Převod čísla 19710 z desítkové soustavy do čtyřkové celočíselné dělení 197 : 4 = 49 49 : 4 = 12 12 : 4 = 3 3:4=0 0:4=0
zbytek po dělení 1 1 0 3 0
směr čtení převedeného čísla
výsledek převodu
19710 = 30114
Převod čísla 22310 z desítkové soustavy do osmičkové celočíselné dělení 223 : 8 = 27 27 : 8 = 3 3:8=0 0:8=0
zbytek po dělení 7 3 3 0
směr čtení převedeného čísla
výsledek převodu
22310 = 3378
Strana 6 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Převod čísla 22310 z desítkové soustavy do šestnáctkové celočíselné dělení 223 : 16 = 13 13 : 16 = 0 0 : 16 = 0
zbytek po dělení 1510 (F16) 1310 (D16) 0
směr čtení převedeného čísla
výsledek převodu
22310 = DF16
Poznámka: Jak zjistíme, že šestnáctkové ekvivalenty dekadických čísel 1510 a 1310 jsou F16 a D16? Zatím se ještě můžeme podívat do tabulky 2, ale už bychom si měli pamatovat: 1010 = A16 a 1510 = F16. Zbývající číslice odpočítáme pěkně na prstech: B, C, D, E ≈ 11, 12, 13, 14 (hnidopich může připočítávat prsty na nohou).
Převod čísel z libovolné soustavy do dekadické Číslo zapsané v libovolné číselné soustavě rozepíšeme podle Honerova schématu a provedeme všechny výpočty podle pravidel platných v dekadické soustavě. Příklady: Převod čísla 110001012 z binární soustavy (r = 2) do desítkové 110001012 = 1 · 27 + 1 · 26 + 0 · 25 + 0 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 1 · 20 = = 128 + 64 + 0 + 0 + 0 + 4 + 0 + 1 = 19710 Převod čísla 32014 ze čtyřkové soustavy (r = 4) do desítkové 32014 = 3 · 43 + 2 · 42 + 0 · 41 + 1 · 40 = 3 · 64 + 2 · 16 + 0 · 4 + 1 · 1 = 192 + 32 + 0 + 1 = 22510 Převod čísla 3078 z osmičkové soustavy (r = 8) do desítkové 3078 = 3 · 82 + 0 · 81 + 7 · 80 = 3 · 64 + 0 · 8 + 7 · 1 = 192 + 0 + 7 = 19910 Převod čísla D716 z šestnáctkové soustavy (r = 16) do desítkové D716 = D · 161 + 7 · 160 = 13 · 16 + 7 · 1 = 208 + 7 = 21510
Převody čísel mezi příbuznými číselnými soustavami Číselně soustavy se základy 2, 4, 8 a 16 jsou příbuzné, Příbuznost je patrna nejlépe z toho, že můžeme velmi snadno převádět čísla z binární soustavy do zbývajících tří a také naopak. V číslicové technice se budeme zabývat především těmito příbuznými číselnými soustavami. Je proto velmi důležité tyto převody dokonale ovládat. Převod čísel ze čtyřkové soustavy (r = 4) do dvojkové Každou číslici čísla ve čtyřkové soustavě zapíšeme pomocí dvou bitů binárního čísla. Příklad:
30114 110001012
30114 = 110001012
Převod čísel z osmičkové soustavy (r = 8) do dvojkové Strana 7 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Každou číslici čísla v osmičkové soustavě zapíšeme pomocí tří bitů binárního čísla. Příklad:
3718 0111110012
3718 = 11111001 2
Nevýznamné nuly na začátku binárního čísla není nutno zapisovat. Převod čísel z šestnáctkové soustavy (r = 16) do dvojkové Každou číslici čísla v šestnáctkové soustavě zapíšeme pomocí čtyř bitů binárního čísla. Příklad:
3C 16 00111100 2
3C16 = 111100 2
Nevýznamné nuly na začátku binárního čísla opět není nutno zapisovat. Stojí za povšimnutí, že počet bitů binárních ekvivalentů původních číslic je vždy shodný s počtem bitů binárního ekvivalentu největší číslice původní číselné soustavy (34 = 112, 78 = 1112, 1516 = 11112). Převody čísel z dvojkové soustavy do ostatních příbuzných děláme opačným postupem, nejdříve binární číslo rozdělíme odzadu podle příslušného počtu bitů a pak převedeme každou bitovou skupinu zvlášť. Převod čísel z dvojkové soustavy do čtyřkové Binární číslo rozdělíme odzadu po dvou bitech a převedeme každou dvojici zvlášť. Příklad:
101110012 2 3 2 14
101110012 = 23214
Převod čísel z dvojkové soustavy do osmičkové Binární číslo rozdělíme odzadu po třech bitech a převedeme každou trojici zvlášť. Příklad:
10111001 2 2 7 18
101110012 = 271 8
Převod čísel z dvojkové soustavy do šestnáctkové Binární číslo rozdělíme odzadu po čtyřech bitech a převedeme každou čtveřici zvlášť. Příklad:
10111001 2 B 916
Převody čísel mezi přes dvojkovou soustavu.
101110012 = B9 16 ostatními
příbuznými
soustavami
provádíme
zpravidla
Převody pomocí kódu „8421“ Pro převody čtyřbitových (případně i tříbitových) binárních čísel používáme kód „8421“, což je v podstatě zkrácené Hornerovo schéma – mocniny čísla 2. Uvedené číslice napíšeme sestupně a pak, pod ně, převáděné binární číslo. Součet číslic kódu, pod kterými jsou binární jedničky, je výsledek převodu7. 7
Kód „8421“ je zpravidla vnímán pouze jako druhé označení kódu BCD (viz dále). Ale myslím si, že nic nebrání jeho rozšířenému použití tak, jak to dělám zde.
Strana 8 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Příklad:
8421 – číslice kódu (připravíme vždy stejně) 1011 – převáděné binární číslo => 10112 = 8 + 2 + 1 = 1110 = B16
Máme-li naopak převést např. číslo D16 do binární soustavy, nejprve si na prstech odpočítáme převod do dekadické (D16 = 1310) a potom vybereme právě ty číslice kódu, jejichž součtem získáme převáděné číslo (1310 = 8 + 4 + 1). Jde to vždy jen jedním způsobem. Pod vybrané číslice pak napíšeme jedničky a pod zbývající nuly. 8421 – číslice kódu (připravíme vždy stejně) 1101 – pod vybrané číslice pak napíšeme jedničky a pod zbývající nuly Tak získáme hledané binární číslo, výsledek převodu (D16 = 1310 = 8 + 4 + 1 = 11012). Znalost kódu „8421“ je velmi užitečná pro zrychlení převodů čísel.
Početní operace s binárními čísly Některé z prvních počítačů (např. ENIAC) pracovaly v dekadické soustavě, tzn. pro každou z deseti číslic byl vymezen určitý rozsah napětí. Tyto počítače ale byly příliš složité, měly malý výpočetní výkon vzhledem ke své velikosti (brontosauří syndrom) a byly málo spolehlivé; kontrolní mechanismy správnosti zpracování dat byly jen velmi obtížně aplikovatelné. Ukázalo se, že je mnohem výhodnější umístit na vstup počítače převodník dekadického kódu na binární, ve kterém jsou vykonány veškeré početní operace a znovu použít převodník pro zobrazení výsledku v dekadické podobě. Pro vykonávání početních operací v binárním kódu je počítač vybaven potřebnými registry (rychlé paměťové buňky) a logickými obvody pro provádění poměrně jednoduchých logických operací (například posun bajtu v registru o jeden bit doleva či doprava, záměna nul jedničkami či jedniček nulami apod.) Ryze aritmetickou operaci ale počítač ve skutečnosti provádí jen jednu – součet binárních čísel. Odčítání, násobení, dělení, umocňování, odmocňování i výpočty goniometrických a jiných funkcí – to všechno je pomocí důvtipných algoritmů převáděno na sčítání. Proto budeme sčítání binárních čísel věnovat zvláštní pozornost. Jednobitová čísla již sčítat umíme (viz tvorba dvojkové soustavy) a k pochopení součtu vícebitových čísel stačí pozorně projít následující příklad s komentáři k dílčím výpočtům. 101110012 110111012 1100101102
komentáře k dílčím výpočtům
1 + 1 = 0 a jedna jde dál 0 + 0 = 0 a 1 z přenosu = 1 (přenos 0) 1 + 0 = 1 (přenos 0) 1 + 1 = 0 a jedna jde dál 1 + 1 = 0 a 1 z přenosu = 1 a jedna jde dál 0 + 1 = 1 a 1 z přenosu = 0 a jedna jde dál 1 + 0 = 1 a 1 z přenosu = 0 a jedna jde dál 1 + 1 = 0 a 1 z přenosu = 1 a jedna jde dál 1 z přenosu
Strana 9 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Pěkný příklad pro pochopení toho, jak se aritmetické operace provádí pomocí sčítání, je rozdíl dvou binárních operandů vypočítaný pomocí jednotkového doplňku. Uvádím pouze postup výpočtu bez důkazu. Příklad:
a)
10110112 – 1101112
zopakujeme si názvy obou operandů, jak jsme se je učili ve třetí třídě základní školy – menšenec a menšitel – a menšitele doplníme vpředu nulami na stejný počet bitů, kolik jich má menšenec 10110112 – 01101112
b)
menšence opíšeme beze změny a přičteme jednotkový doplněk menšitele, který vytvoříme záměnou nul jedničkami a jedniček nulami 10110112 10010002 101000112
c)
– mezisoučet bez jedničky v nejvyšším bitu – tahle jednička by tam vyloženě chyběla, nutno ji přičíst – hledaný rozdíl
můžeme tedy nalezený rozdíl zapsat do původního zadání 10110112 – 1101112 1001002
e)
– menšenec – doplněk menšitele – mezisoučet
z výsledného mezisoučtu odebereme jedničku z nejvyššího bitu, přičteme ji k nejnižšímu bitu a je to hotové (nevýznamnou nulu na začátku rozdílu již neopisuji) 1000112 12 1001002
d)
– menšenec – menšitel
– menšenec – menšitel – nalezený rozdíl
pro jistotu vykonáme zkoušku, stejně jako ve třetí třídě základní školy, sečteme rozdíl s menšitelem a musí vyjít menšenec
Zkouška:
1001002 1101112 10110112
– k nalezenému rozdílu – přičteme menšitele – a součet se vskutku shoduje s menšencem v zadáním
Poznámka: V literatuře často nacházíme nalezení rozdílu binárních čísel pomocí tzv. dvojkového doplňku. Ten získáme tak, že jednotkový doplněk zvětšíme o jedničku. Dvojkový doplněk pak sečteme s menšencem a jedničku v nejvyšším bitu součtu (hledaného rozdílu původního zadání) odstraníme. Je evidentní, že obě metody jsou ve svém důsledku rovnocenné. Dvojkový doplněk je zřejmě lepší pro pochopení, jak to všechno funguje. To ale není předmětem tohoto zjednodušeného výukového materiálu. Důkaz najdete např. v [1] nebo zadáním výrazu „dvojkový doplněk“ v četných odkazech vyhledávačů na webu.
Strana 10 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Kód BCD Kód BCD (Binary Coded Decimal) je jedním z nejčastěji používaných kódů pro reprezentaci desítkových čísel. Při tomto kódování je každá číslice dekadického čísla zakódována pomocí čtyř bitů binární číselné soustavy. Příklad:
39 10 00111001 BCD
39 10 = 111001BCD
Zpětný převod: BCD číslo rozdělíme odzadu po čtyřech bitech a převedeme každou čtveřici zvlášť. Čísla v kódu BCD jsou velmi podobná číslům binární soustavy, ale vychází při stejné hodnotě poněkud delší (alespoň od čísla 1010 = 10102 = 10000BCD). To je způsobeno tím, že ne každá kombinace nul a jedniček je v kódu BCD smysluplná. Například číslo 111010101BIN je v pořádku (odpovídá číslu 46910), ale 111010101BCD je zcela mimo realitu, neboť odzadu druhá čtveřice bitů 11012 sice odpovídá dekadickému číslu 1310 nebo hexadecimální číslici D16, ale nemá ekvivalent v žádné dekadické číslici.
Grayův kód Grayův kód se také nazývá zrcadlový. Brzy uvidíme proč. Abychom pochopili jeho význam, ukážeme si nejdříve, jak by svět vypadal bez něj. Dejme tomu, že chceme mít malou meteorologickou stanici a v pravidelných intervalech (třeba jednou za 5 minut) zaznamenat směr větru do paměti počítače. Postavíme si na zahradě otočný stožár s plechovou korouhvičkou (nebo punčochou), podle obrázku 1.1. Síla větru, působící zejména na ocas kohouta, natáčí korouhvičku i stožár v ložiskách vždy tak, že šipka stále ukazuje „odkud vítr vane“. (Velmi užitečné zařízení pro každou dobu). A nyní, jak tuto důležitou informaci dostaneme do paměti PC? Dole na stožáru je upevněno tzv. kódové kolo – důmyslný obrazec na průhledném nosiči (sklo, čirý plast, filmová fólie) kruhového tvaru. Možná provedení kódových kol v binárním a Grayově kódu jsou na obrázcích 1.2 a 1.3. Nad Obr. 1.1 Příklad konstrukce zařízení pro snímání směru větru toto kol umístíme zdroj světla (diodu LED) a pod něj optická čidla (fotodiody, fototranzistory apod.) Počet snímačů je dán požadovanou přesností snímání úhlu natočení korouhve. V daném případě máme čtyři čidla, snímáme tedy čtyři bity, a tomu odpovídá 24 = 16 kombinací logických stavů. Celý obvod kola má 360º, snímáme tedy úhel natočení korouhve s teoretickou přesností 360 º : 16 = 22,5 º, není ale žádný problém nějaké bity přidat a přesnost tak výrazně zvýšit. Samotné kódové kolo je „srdce“ snímače polohy s výstupem v příslušném kódu. Má čtyři kruhové dráhy (pro každý bit jednu) rozdělené do segmentů. Tmavé segmenty jsou neprůhledné, zastiňují tedy optická čidla pod sebou a ta indikují log. nuly. Pod průhlednými segmenty jsou působením procházejícího světla indikovány log. jedničky. Strana 11 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
Na obr. 1.2 jsou segmenty kódového kola uspořádány podle binárního kódu. Bity s nejnižší váhou jsou nejblíže obvodu. Otáčením kola ve směru hodinových ručiček postupně získáváme na výstupech čidel všech 16 možných čtyřbitových binárních čísel. Při opačném směru otáčení se čísla vždy o 1 zmenšují. Na první pohled máme dokonalý snímač polohy, ale dále uvidíme, že tomu tak není. BIN DEC 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 Obr. 1.2 Uspořádání segmentů kódového kola podle binárního kódu. Je-li kódové kolo právě v naznačené poloze, mohlo by se zdát, že na výstupu bude číslo 0000 nebo 1111. Obě varianty by byly v pořádku, ale musíme vzít do úvahy i další faktory plynoucí z praktické realizace zařízení: − jednotlivé optické snímací prvky se nám nikdy nemůže podařit zcela rovnoměrně nasvítit, usadit přesně do jedné přímky a také nikdy nebudou mít zcela shodnou citlivost na světlo − dělicí linie mezi průhlednými a tmavými segmenty nebude nikdy dokonale rovná a rovnoběžná s linií čidel − je prakticky nerealizovatelné, aby hranice rozhodnutí o logické úrovni na výstupu čidla byla přesně v polovině zastínění čidla, atd. Z uvedených skutečností vyplývá, že v blízkosti naznačené polohy kódového kola mohou být na výstupech optických čidel zcela náhodné logické úrovně a potažmo zcela libovolné binární číslo ze všech šestnácti možných. A to jsou velmi nepříjemné hazardní stavy! Snadno najdeme i další polohy s obdobným problémem. Jak tento nedostatek snímače polohy odstranit? Grayův kód má, oproti binárnímu a většině ostatních, jednu velmi zajímavou a důležitou vlastnost. Každé dvě sousední kombinace logických stavů se liší pouze v jednom bitu. Při přechodu z jedné kombinace do druhé se tedy žádná jiná na výstupech nemůže vyskytnout. Tím jsou odstraněny veškeré hazardní stavy při snímání polohy nejen našeho kódového kola. Nejdříve si ukážeme, jak se Grayův kód tvoří a proč se mu říká zrcadlový. 0 1 0 1 1 0
00 01 11 10
Začneme úplně stejně, jako doposud vždy. Nulou a jedničkou. Potom si pod jedničkou nakreslíme vodorovnou čáru – vodní hladinu – a podle ní zrcadlíme vše, co jsme napsali. Před každý řádek nad hladinou doplníme nulu (je „dutá“, takže dobře plave) a pod hladinou jedničku. Strana 12 (celkem 13)
ČÍSLICOVÁ TECHNIKA KAPITOLA 1 – ČÍSELNÉ SOUSTAVY A KÓDY
00 01 11 10 10 11 01 00 000 001 011 010 110 111 101 100 100 101 111 110 010 011 001 000
000 001 011 010 110 111 101 100 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Hladinu necháme klesnout až dolů a znovu zrcadlíme vše, co jsme dosud napsali. A opět před všechny kombinace doplníme nad hladinou nulu a pod hladinou jedničku.
Hladinu opět necháme klesnout až dolů a znovu zrcadlíme vše, co jsme dosud napsali. A znovu před všechny kombinace doplníme nad hladinou nulu a pod hladinou jedničku. Tak můžeme pokračovat, jak dlouho chceme.
Poznámka: Dobrá mnemotechnická pomůcka k zrcadlení může být perlička ze školních sešitů, kterou jsem kdysi slyšel v nějakém silvestrovském pořadu: „Na břehu rybníka seděla dívka a dojila krávu. Ale ve vodě se to zrcadlilo obráceně.“
Na obr. 1.3 jsou segmenty kódového kola uspořádány podle Grayova kódu. Gray
Obr. 1.3 Uspořádání segmentů kódového kola podle Grayova kódu.
0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Literatura 1. Antošová M., Davídek V.: Číslicová technika. KOPP, České Budějovice 2003
Strana 13 (celkem 13)
DEC 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15