Diit.cz - Novinky a informace o hardware, software a internetu

Detailní popis BCD kódování

diit.cz logo na CD-R serveru 1. dubna 2009
BCD kódování je jedna z možných variant, jak zapsat desítkové číslo do nul a jedniček, čili do dvojkové soustavy. Oproti klasickému dvojkovému zápisu, který jsme se snad všichni učili na základní škole, se liší tím, že je optimalizován pro jednoduché zpětné zobrazování v desítkové soustavě, ale na druhou stranu je pro počítač obtížnější počítat s číslem takto zapsaném.

BCD (Binary Coded Decimal) kódování je způsob, který se používá pro zápis čísel. Počítače nepracují jako lidé v desítkové soustavě, ale pracují v soustavě dvojkové. A tak se musí hledat způsoby, jak uložit desítkové číslo do čísla binárního. Ihned vás asi napadne, že stačí prostě desítkové číslo převést na dvojkové a to prostě uložit. Takto se to samozřejmě dělá, jenže to přináší komplikaci v případě, že chcete takové číslo zobrazit. Musíte dvojkové číslo převést na desítkové a to zobrazit. Asi si říkáte, že to není problém. Já s vámi v zásadě souhlasím, ale dodávám, že dnes to není problém.

Dnes se používají masově vyráběné programovatelné chipy, u kterých můžete pomocí firmware jednoduše měnit jejich vlastnosti i chování a není problém napsat firmware, který bude ono převádění z dvojkového do desítkového čísla dělat. Jenže dříve se vyráběly specializované chipy na jednotlivé úkony a tam každé zjednodušení se odrazilo na nižší ceně návrhu a i vlastních výrobních nákladech daného chipu. A takovým zjednodušením oproti klasickému binárnímu zápisu je zápis ve formátu BCD.

BCD formát je velmi jednoduchý, i když se poměrně špatně vysvětluje. Každé číslo (zapsané v desítkové soustavě) je ukládáno po číslicích do čtyř bitů. Pokud tedy číslo v klasickém dekadickém zápisu mělo 5 cifer, bude mít v BCD zápisu 20 bitů. Převodní tabulka vypadá následovně:

Číslo
(v desítkové soustavě)
BCD zápis
(v dvojkové soustavě)
BCD zápis
(v šestnáctkové soustavě)
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9

Číslo 93 by tedy v BCD zápisu ve dvojkové soustavě vypadalo 10010011, číslo 46 pak 01000110. Možná jste si všimli, že v tabulce není napsáno, jakým číslům odpovídají BCD zápisy ve dvojkové soustavě 1010, 1011, 1100, 1101, 1110 a 1111, v šestnáckové soustavě to jsou číslice A, B, C, D, E a F. Odpověď je, že žádným. Prostě tento formát je neekonomický a plýtvá datovým prostorem právě za účelem jednoduššího zobrazování v desítkové soustavě.

A v čem je to zobrazování jednodušší? Inu prostě ve faktu, že stačí vzít čtyři bity a jednoduše z nich můžete zobrazit konkrétní číslici, vezmete další čtyři bity a zobrazit další číslici atd. Jednoduchost jde dokonce tak daleko, že se dříve mohlo napevno zadrátovat těchto 10 možností a nemusel být v chipu žádný algoritmus na přepočítávání dvojkového čísla na desítkové. Sice to na první pohled vypadá, že se BCD zápis neliší od klasického dvojkového, ale to platí jen pro jednociferná čísla. Pro víceciferná to už neplatí, protože například číslo 61 se v dvojkové soustavě napíše jako 111101, kdežto v BCD zápisu má tvar 01100001.

Ač to může připadat podivné, BCD kódování se používá velmi mnoho i dnes. Důvodem je zpětná kompatibilita. Starší formáty, jako například formáty pro CD, ho stále používají a používat i nadále budou. A i v dnešních počítačích typu PC se BCD používá na mnoha místech, kupříkladu u některých volání funkcí BIOSu.

Na závěr bych rád zdůraznil, že BCD se používá především tam, kde se počítá s tím, že daná čísla se budou jen zobrazovat a už se s nimi nebude příliš počítat. Pro počítač je totiž počítání v BCD formátu znatelně složitější, než v klasickém binárním zápisu.

Diskuse ke článku Detailní popis BCD kódování

Žádné komentáře.