You are on page 1of 22

Konstrukce číslicových systémů

Zobrazení čísel

studijní text frekventantů předmětu PV170/1

Obsah

Předmluva................................................................................................................................... 2
1 Úvod do problematiky zobrazení čísel v číslicových systémech ............................................ 3
1.1 Zobrazení hodnoty čísel v číslicových systémech............................................................. 3
1.2 Převody mezi polyadickými číselnými soustavami .......................................................... 4
1.2.1 Převod do desítkové číselné soustavy ......................................................................... 5
1.2.2 Převod z desítkové číselné soustavy............................................................................ 5
1.2.2.1 Převod celé části .................................................................................................... 5
1.2.2.2 Převod zlomkové části ........................................................................................... 6
1.3 Zobrazování reálných čísel v číslicových systémech ........................................................ 7
1.3.1 Zobrazení záporných čísel ........................................................................................... 8
1.3.1.1 Zobrazení záporného čísla v přirozeném kódu (Native Code) .............................. 9
1.3.1.2 Zobrazení záporného čísla v inverzním kódu (One’s Complement)...................... 9
1.3.1.3 Zobrazení záporného čísla v doplňkovém kódu (Two’s Complement) ............... 10
1.3.1.4 Zobrazení záporných čísel v modifikovaném doplňkovém kódu ........................ 11
1.3.2 Formáty čísel ............................................................................................................. 11
1.3.3 Formát čísel v pevné řádové čárce ............................................................................ 11
1.3.4 Formát v pohyblivé řádové čárce .............................................................................. 12
1.3.5 Formát čísel v binárně dekadickém tvaru (BCD) ...................................................... 13
1.3.5.1 Převody mezi váhovým 8421 BCD kódem a binárním kódem navzájem ........... 15
1.3.5.1.1 Převod z binární soustavy do váhové 8421 BCD soustavy pomocí
programově realizovaného čítače ...................................................................... 15
1.3.5.1.2 Převod z binární soustavy do váhové 8421 BCD soustavy pomocí metody
posuvů a korekcí (Hornerovo schéma) .............................................................. 16
1.3.5.1.3 Převod z váhového 8421 BCD kódu do binární soustavy s použitím metody
postupného násobení.......................................................................................... 17
1.3.5.1.4 Převod z váhového 8421 BCD kódu do binární soustavy s použitím posuvů
a korekcí ............................................................................................................ 18
1.3.5.1.5 Převod obvodově realizovaným čítačem ....................................................... 20
1.3.5.1.6 Převody tabulkou ........................................................................................... 20
Seznam obrázků ....................................................................................................................... 22
Seznam tabulek ........................................................................................................................ 22

file 1
Předmluva

Studijní text Konstrukce číslicových systémů je určen pro studenty Fakulty informatiky, ale
může sloužit jako učební text i pro jiné obory v oblasti návrhu a realizace logických systémů
a logického řízení v rámci nabídky studijních předmětů pro ostatní fakulty Masarykovy
univerzity.

Studijní text pojednává o problematice dvou základních oblastí: logické systémy a realizace
logických obvodů. Probíraná látka není pouze popisem logických systémů, ale představuje
ucelenou oblast s vazbou na aplikační sféru řízení diskrétních systémů. Tato oblast řízení je
vedle spojitého řízení základním kamenem všech dalších systémů ovládání a řízení. Řízením
se obecně rozumí ovládání technologického procesu tj. objektu, který máme řídit. Pod pojmem
technologický proces si může představit jakýkoli proces od procesů technických až po procesy
společenské, které splňují požadavky kladené na systémy s diskrétním parametrem.

Závěrem autor děkuje všem, kteří se na tvorbě učebního textu podíleli, a taktéž bude vděčen
studentům za připomínky, které přispějí ke zkvalitnění textu. Autor přeje hodně úspěchů při
studiu těm, kteří jej hodlají použít ať již pro získání nebo doplnění svých vědomostí.

file 2
1 Úvod do problematiky zobrazení čísel v číslicových systémech

Hodnoty číslic mohou být zobrazovány různými způsoby. Základní orientaci v této
problematice poskytne následující schéma.

zobrazení hodnot čísel

spojité nespojité

číselné soustavy zobrazovací kódy

dekadická
nepolyadické polyadické
binární
hexadecimální
osmičková

Číslicové systémy se od systémů označovaných jako analogové (případně označované jako


pracující ve spojitém čase) liší ve dvou základních aspektech:
• zpracovávané údaje jsou v číslicovém systému uloženy v digitální podobě,
• pracují v nespojitém režimu - diskrétní systémy. Každé dílčí operaci je přiděleno kvan-
tum času, které může být synchronní nebo asynchronní s činnostmi souvisejícími
s ostatními operacemi.

V této části textu se budeme zabývat prvním problémem a to zobrazováním hodnot čísel
zpracovávaných v číslicových systémech.

1.1 Zobrazení hodnoty čísel v číslicových systémech

Pro uložení dat jsou v číslicových systémech vyčleněny úložné kapacity - místa (paměti
a registry), kde jsou data dočasně nebo trvale uchovávána. Nutno předem upozornit, že tato
úložná místa žádným způsobem nelimitují formu a tvar uchovávaných dat. Hlavním faktorem
ovlivňujícím tvar dat jsou postupy realizace operací nad těmito daty.

Data zpracovávaná v číslicovém systému lze rozdělit minimálně do dvou skupin - znaky (texty)
a čísla. V této části textu se zabýváme zobrazením čísel, a proto objektem dále vedené diskuse
bude zobrazení čísel, jinak řečeno formy obrazů čísel.

Lze odvodit celou řadu metod zobrazení nespojitých interpretací čísel. Nutno poznamenat, že
hlavním kritériem volby konkrétní interpretace čísla jsou technologické možnosti schůdné
realizace operací nad těmito obrazy čísel, tedy možnosti realizace aritmetických a logických
operací nad takto interpretovanými čísly. Čísla v nespojitých interpretacích jsou zobrazována
v číselných soustavách. Z hlediska technické realizovatelnosti výhodnými vlastnostmi
disponují soustavy polyadické, které se dělí podle základu použité číselné soustavy. Soustavy
nepolyadické přináší značné problémy pro strojovou realizaci aritmetických a logických
operací (viz římská číselná soustava).

Polyadické číselné soustavy se dělí podle základu číselné soustavy a mezi nejpoužívanější patří
následující (název je odvozen od označení základu příslušné číselné soustavy):
• dekadická číselná soustava,

file 3
• hexadecimální číselná soustava,
• binární číselná soustava.

Běžně používaná dekadická číselná soustava má řadu vlastností vhodných pro strojové
zpracování čísel, ale neumožňuje optimálně využít kapacitu digitálního obrazu slova. Pro
polyadické číselné soustavy se používají všeobecně přijaté pravidla (polyadické rozvoje)
shodné s dekadickou číselnou soustavou. Všeobecně tedy platí, že pozice číslice v zápisu čísla
vyjadřuje jeho váhu. Váha se uvádí v tzv. úplném tvaru zápisu čísla - viz následujíc příklad.
Příklad:
Vyjádřete číslo A = 48 901,1610 v úplném tvaru
A = 4*104 + 8*103 + 9*102 + 0*101+ 1*100+ 1*10-1 + 6*10-2

V polyadické číselné soustavě má každá číslice kromě své hodnoty - vlastní hodnoty - ještě
hodnotu pozice v rámci čísla - místní hodnotu. Pozice vyjadřuje váhu příslušné číslice v rámci
čísla. Váha číslice je dána polohou číslice vůči desetinné čárce a v podstatě představuje
exponent, jímž je při vyjadřování hodnoty čísla umocněn základ číselné soustavy. Konkrétní
hodnotu číslice, v rámci čísla získáme podle vztahu:
ai*10i
Obecně lze zápis libovolného čísla v jakékoliv číselné soustavě vyjádřit v následujícím tvaru:
A = an-1*Zn-1 + an-2*Zn-2 + an-3*Zn-3 + ......... ai*Zi + ......... a0*Z0+ a-1*Z-1 + ....
n −1
1.1
A= a Z
i=− r
i
i

Výše uvedeným vztahem se definuje třída polyadických zobrazení hodnoty A, lišících se


základem Z.

Polyadická číselná soustava představuje ideální platformu pro aplikaci diskrétního systému
zobrazení čísel. Problémem je pouze to, jak schůdným způsobem interpretovat počet stavů
v jednom řádu zobrazení čísla.

Je zřejmé, že pro běžně přístupnou technologickou základnu je nejschůdnější aplikovat binární


číselnou soustavu, kde jednotlivé hodnoty číslice lze interpretovat stavy spínač sepnut -
rozepnut (elektrický proud teče - neteče, dioda svítí - nesvítí aj.).

1.2 Převody mezi polyadickými číselnými soustavami

Základním problémem je vyjádřit stejnou hodnotu čísla v jedné polyadické soustavě


v polyadické soustavě s odlišným základem. Převodem čísla A, vyjádřeného v polyadické
soustavě se základem Z1 do polyadické soustavy se základem Z2, je taková manipulace
s číslicemi původního vyjádření, které vede k získání číslic zobrazující tutéž hodnotu A v nové
číselné soustavě o základu Z2.

Pro postup převodu je důležité, v jaké číselné soustavě realizujeme převod. Vzhledem ke
způsobu vnímání čísel populací formované vzdělávacím systémem euroamerického regionu, je
nejvhodnější jako referenční soustavu používat dekadickou číselnou soustavu. Z tohoto důvodu
bude postup převodu čísel rozdělen na dva případy. V prvním případě převádíme číslo do
desítkové číselné soustavy a ve druhém z desítkové do jiné číselné soustavy.

file 4
1.2.1 Převod do desítkové číselné soustavy

K převodu ze soustavy o základě Z1 do soustavy o základu 10 se používá vztahu 1.1, kdy základ
soustavy Z1 vyjádříme v desítkové číselné soustavě. Tento vztah platí pro základy číselných
soustav větších i menších než hodnota 10. V tomto případě pouze dosadíme vztahu 1.1
a vyčíslíme požadované hodnoty polyadickým rozvojem, viz následující příklady.
Příklad:
Převeďte číslo A = 432,28 z osmičkové do desítkové soustavy.
A = 4*82 + 3*81 + 2*80 + 2*8-1
A = 4*64 + 3*8 + 2*1+ 2*0,125 = 282,2510
Příklad:
Převod čísla A = 1101,012 z binární do desítkové soustavy.
A = 1*23 + 1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2
A = 1*8 + 1*4 + 0*2+ 1*1 + 0*0,5 + 1*0,25 = 13,2510

1.2.2 Převod z desítkové číselné soustavy

Převáděné číslo A je číslem reálným, má svou celočíselnou I z zlomkovou část Fz . Jednotlivé


1 1

převedené číslice je nutno vyjadřovat v číselné soustavě o základu Z2. K převodu opět
použijeme vztah 1.1, ale převod se větví na dvě části - první pro celou část převáděného čísla
a druhá pro zlomkovou část převáděného čísla.

1.2.2.1 Převod celé části

I z je celé číslo vyjádřené v soustavě o základu Z1. Hledáme jeho vyjádření n řádovým číslem
1

v soustavě Z2. Pro vysvětlení postupu předpokládejme, že známe vyjádření čísla I z v číselné 1

soustavě Z2. V tomto případě lze psát:

A = an −1 * Zn2 −1 + an − 2 * Zn2 − 2 + .......+ ai * Zi2 + .......+ a1 * Z12 + a0 * Z02 1.2

V polynomu 1.2 nás zajímají hodnoty jednotlivých číslic ai. Abychom odvodili hodnoty číslic
ai, je nutno výraz 1.2 dělit základem číselné soustavy Z2 a jako celočíselný zbytek dostáváme
hodnotu a0 (nejnižšího řádu čísla v soustavě Z2):
I z1
= a n − 1 * Z n2 − 2 + a n − 2 * Z n2 − 3 + ......... + a1 * Z 02 + a 0 1.3
Z2
Podíl po dělení označíme symbolem Q1. Hodnotu dalšího - vyššího řádu obrazu čísla v soustavě
Z2 , tedy číslici a1 - dostaneme opět jako celočíselný zbytek po dělení podílu Q1 základem Z2.
Tato operace je vyjádřena následujícím vztahem (1.4):
Q1
= a n − 1 * Z n2 − 3 + a n − 2 * Z n2 − 4 + ......... + a 2 * Z 02 + a1 1.4
Z2
Takto se postupuje dále, až obdržíme hodnotu poslední, nejvyšší cifry převodu an-1, kdy dílčí
podíl Qn-1 = 0.

file 5
Příklad:
Převeďte číslo A = 548 976 31210 z desítkové do osmičkové soustavy
A 548 976 312 základ 8 mocniny 8 dílčí součiny
Q1 68 622 039+0 a0 = 0 1 0
Q2 8 577 754 + 7 a1 = 7 8 56
Q3 1 072 219 + 2 a2 = 2 64 128
Q4 134 027 + 3 a3 = 3 512 1 536
Q5 16 753 + 3 a4 = 3 4 096 12 288
A = 548 976 31210 = 4 056 133 2708
Q6 2 094 + 1 a5 = 1 32 768 32 768
Q7 261 + 6 a6 = 6 262 144 1 572 864
Q8 32 + 5 a7 = 5 2 097 152 10 485 760
Q9 4+0 a8 = 0 16 777 216 0
Q10 0+4 a9 = 4 134 217 728 536 870 912

Příklad:
Převeďte čísla A = 4710 z desítkové do binární soustavy.
A 47 2
Q1 23 a0 = 1
Q2 11 a1 = 1
Q3 5 a2 = 1
A = 4710 = 1011112
Q4 2 a3 = 1
Q5 1 a4 = 0
Q6 0 a5 = 1

1.2.2.2 Převod zlomkové části

Pokud je FZ zlomková část čísla vyjádřeného v soustavě o základu Z1, jehož vyjádření
1

n řádovým číslem v soustavě Z2 existuje, pak obdobně jako v předchozím případě lze psát:

FZ = a − 1 * Z −21 + a − 2 * Z −22 + ..... + a − r * Z −2 r + .....


1
1.5

Symbol r je představuje index čísla N v číselné soustavě o základu Z2. Index r obecně nemusí
představovat konečné číslo. Může se stát, že obraz čísla o konečném počtu cifer v desítkové
číselné soustavě může mít v číselné soustavě Z2 neomezený počet míst.

Ze vztahu 1.5 lze odvodit, že jednotlivé cifry výsledku získáme násobením dílčích zbytků
základem cílové číselné soustavy Z2.

Po prvním násobení získáme jako celou část číslici a-1 a zlomkovou část S-1. Opakováním se
dopracujeme požadovaného počtu cifer zlomkové části převáděného čísla FZ . Postup převodu 1

je zřejmý z příkladů uvedených níže.

Příklad:
Převeďte číslo N = 0,312510 z desítkové do osmičkové soustavy.
N 0,3125 8
S-1 2,5 a-1 = 2
N = 0,312510 = 0,248
S-2 4,0 a-2 = 4

file 6
Příklad:
Převeďte číslo N = 0,35410 z desítkové do binární soustavy (příklad neukončeného tvaru
převodu).
N 0,354 2
S-1 0,708 a-1 = 0
S-2 1,416 a-2 = 1 N = 0,35410 = 0,0101101....2
S-3 0,832 a-3 = 0
S-4 1,664 a-4 = 1
S-5 1,328 a-5 = 1
S-6 0,656 a-6 = 0
S-7 1,312 a-7 = 1

1.3 Zobrazování reálných čísel v číslicových systémech

Doposud jsme pojednávali o diskrétním zobrazení čísel. Poněkud odlišným problémem je


jednak uložení obrazů čísel v číslicovém systému a dále možnosti číslicového systému provádět
nad nimi matematické a logické operace.

Každý číslicový systém má limitovanou délku jednotky dat, s nimiž může pracovat. Je to dáno
jednak šířkou toku dat systémem a jeho konstrukcí a dále možností deklarovat a používat n-
násobné struktury slov. Šířku toku dat označujeme termínem délka slova. Limitovaná délka
slova přináší určité problémy s rozlišovací schopností zobrazovaných dat, která jsou výsledkem
aritmetických operací násobení a dělení. Tato vlastnost číslicových systémů vedla návrháře
číslicových systémů k řešením eliminujícím nevhodné vlastnosti související s používáním
diskrétního zobrazení dat.

Výsledkem snah generací návrhářů číslicových zařízení je skutečnost, že čísla lze ukládat ve
více tvarech, tudíž že jsou zobrazena ve tvaru umožňujícím dostatečně přesné vyjádření jejich
hodnot. Tato skutečnost se odráží jak v technickém, tak programovém vybavení číslicových
počítačů. U větších strojů je běžné, že jsou vybaveny instrukcemi pro práci s více obrazy čísel
a taktéž jejich aritmeticko-logické jednotky mají specializované moduly pro práci
s jednotlivými obrazy čísel (viz též koprocesory běžných mikroprocesorů).

Pro další výklad je užitečné upozornit na několik vlastností polyadických soustav. V dalším
výkladu předpokládejme, že zobrazujeme celá čísla (řádová čárka je zcela napravo od
významově nejnižšího bitu obrazu čísla).

První vlastností je nejvyšší možné zobrazitelné číslo označované jako rozsah zobrazitelnosti,
který lze vyjádřit vztahem:
n −1
M=  (Z − 1)  Zi = Zn − 1 1.6
i=0

kde n je počet řádů vyčleněných pro zobrazení čísla (dáno konstrukcí počítače).

Další vlastností je zobrazovací kapacita číselné soustavy vyjadřující poměr potřebného počtu
řádů zobrazení ve zvolené číselné soustavě o základu Z k počtu řádů pro vyjádření téhož čísla
v soustavě dekadické. Pro velká N lze uvažovat následující vztah:

10N = K = Z n 1.7

po zlogaritmování dostaneme vztah:

file 7
n 1 1.8
=
N log Z
pro binární soustavu obdržíme hodnotu blízkou hodnotě 3,3.

Poslední zde uvedenou charakteristikou je optimální polyadická soustava, vyznačující se


minimálními nároky na technické vybavení. Složitost a cenu může vyjadřovat číslo R, které je
součinem základu číselné soustavy - Z a počtu řádů - n. (R představuje kriteriální funkci
sloužící pro určení optimální hodnoty). Pro jakou hodnotu Z bude R minimální? Pro velká čísla
můžeme postupovat podle následujících vztahů:
K  Zn platí pro velká n a po zlogaritmování rovnice získáváme
ln K = n  ln Z odtud
ln K
n= dosazením do kriteriální funkce dostáváme vztah
ln Z
ln K
R = Z
ln Z
Extrém funkce najdeme pomocí derivace funkce R podle Z,
dR ln K ln K 1 1
= −Z  2= 1−
dZ ln Z ln Z Z ln Z
1 dáme rovno 0 a vyčíslíme Z
1− =0
ln Z
ln Z = 1

Z = e  2,728..... 1.9
Protože základem polyadické soustavy může být pouze přirozené číslo, nejvhodnějším
základem optimální polyadické soustavy by bylo číslo 3 (e  2,728). Nutno konstatovat, že
k dispozici jsou pouze součástky se dvěma stavy (základ aplikovatelné soustavy je číslo 2).
Aplikace binární soustavy je sice nutností (z hlediska aplikovatelných fyzikálních jevů pro
realizaci číslicových obvodů), ale nutno konstatovat, že z hlediska optimalizace objemu
nezbytného technického vybavení je blízko optimu.

1.3.1 Zobrazení záporných čísel

Pro zajištění univerzálnosti použití číslicového počítače, je nutno umožnit zpracování a tudíž
i zobrazování reálných čísel. Reálná čísla mohou mít celou a desetinnou část a mohou být jak
kladná tak záporná. Zpracování takovéhoto obrazu čísla v aritmeticko-logické jednotce
počítače je běžné ve většině dostupných procesorů. U běžných procesorů se můžeme setkat se
specializovanými částmi - koprocesory - určenými pro zpracování některých formátů dat.

Zvláštní pozornost je třeba věnovat zobrazení záporných čísel. Běžně se používají následující
tvary:
• přirozený kód,
• inverzní kód,
• doplňkový kód,
• modifikovaný doplňkový kód.
Poznámka:
Kladná čísla mají stejný tvar pro všechny kódy.

file 8
Poznámka:
V některých případech je výhodné použít i další možnosti zobrazení záporných čísel jako např.:
– aditivní kód
– aditivní kód typu 0
– aditivní kód typu 1

Pro zobrazení znaménka čísla je vyčleněn jeden bit slova. Výhodu přináší, pokud mu vyčleníme
významově nejvyšší bit slova. V takovém případě lze efektivně používat sčítačku pro celý
rozsah slova a stejné technické vybavení můžeme používat i pro aritmetiku čísel bez znaménka.
Poznámka:
Tato vlastnost aritmetiky je výhodná pro aplikace operandů s dvounásobnou nebo vícenásobnou délkou, kdy
se významově nižší slova operandů zpracovávají jako čísla bez znaménka a znaménko se vyhodnocuje až pro
významově nejvyšší slovo operandu.

Kladnému znaménku se přiřazuje hodnota log.0 a zápornému znaménku hodnota log.1. Pro
konzistenci výkladu předpokládejme, že významově nejnižší bit je v obraze čísla umístěn
napravo a znaménkový bit se nachází nalevo od významově nejvyššího bitu - viz níže.
0 0 0 1 1 1 0 0 0 1 1 1
,
znaménko desetinná čárka

Poznámka:
V praxi lze však najít i jiné konfigurace obrazu číslic. Výše uvedená úmluva však není na újmu obecnosti
výkladu, protože principy činnosti zůstávají zachovány.

Na náročnost a případnou zdlouhavost vyčíslování výsledků aritmetických operací má


podstatný význam kód zobrazení záporného čísla. Vhodné kódování záporných čísel může
podstatně zjednodušit konstrukci aritmeticko-logické jednotky číslicového počítače a zkrátit
dobu generování výsledku.

1.3.1.1 Zobrazení záporného čísla v přirozeném kódu (Native Code)

Pro přehledné počítání, obvyklé pro manuální výpočty, prováděné člověkem bez výpočetních
pomůcek nebo přístrojů, má význam zobrazení v přirozeném kódu. Záporné a kladné číslo se
liší pouze ve znaménkovém bitu. Obraz XA záporného čísla A v přirozeném kódu lze vyjádřit
zápisem:
XA = − A

1.3.1.2 Zobrazení záporného čísla v inverzním kódu (One’s Complement)

Název tohoto kódu záporného čísla naznačuje jeho strukturu – jednotlivé bity záporného čísla
jsou inverzí bitů kódu přirozeného.

Záporné číslo v inverzním kódu je doplňkem přirozeného kódu (absolutní hodnoty) čísla do
maximálně zobrazitelného čísla (je dáno délkou slova - počtem bitů slova). Obraz XB záporného
čísla B v inverzním kódu lze formálně vyjádřit následujícím zápisem:
XB = Zn − Z 0 − B = Zn − 1 − B
kde výraz Zn představuje zobrazovací kapacitu použité číselné soustavy (symbol Z představuje
základ číselné soustavy a n délku slova). Hodnotu čísla rovnou zobrazovací kapacitě nelze
v konkrétní realizaci kompletně zobrazit, je totiž o jeden řád vyšší než maximálně zobrazitelné
číslo a jeví se jako číslo 0.

file 9
V inverzním kódu je součet kladného a záporného čísla (tedy rozdíl dvou kladných čísel) o téže
absolutní hodnotě roven maximálně zobrazitelnému číslu v délce slova používaného pro
zobrazení čísla nazývaného záporná nula:
B − B = B + Zn − 1 − B = Zn − 1
Generování čísla v inverzním kódu se jeví jako velmi jednoduchá operace. Zásadní nevýhoda
inverzního kódu se projevuje při provádění některých aritmetických operací. Pro dosažení
validního obrazu kladného výsledku při součtu kladného a záporného čísla je nutno k součtu
přičíst do nejnižšího řádu 1, což vlastně představuje cyklický přenos a způsobuje dodatečné
(nutno podotknout, že nežádoucí) zpoždění sumátoru, viz následující příklad.
Příklad:
Součet dvou čísel v inverzním kódu:
–8 1 0 1 1 1
+9 0 1 0 0 1
+0 0 0 0 0 0

+1 0 0 0 0 1

Výsledek má být kladné číslo. Po prostém sečtení nedostáváme správný obraz výsledku,
protože sečítáme obrazy kladného čísla a záporného čísla a dostáváme kladné číslo menší o
hodnotu +1, což je vyjádřeno níže uvedeným vztahem:
𝑨 − 𝑩 = |𝑨| + 𝒁𝒏 − |𝑩| − 𝟏 = |𝑨| − |𝑩| − 𝟏
protože číslo odpovídající dynamickému rozsahu, tedy číslo Zn je mimo rozsah zobrazitelnosti,
můžeme ho ve vztahu vynechat a lze vypozorovat, že prostý součet je menší o hodnotu +1.
Kladný výsledek tudíž musíme zvětšit o číslo +1. Skutečnost, že výsledek nabude kladné
hodnoty, indikuje přenos ze znaménkového bitu, a proto ho můžeme použít jako povel
k přičtení hodnoty +1 k výsledku. Jak si ukážeme později, právě přenos ze znaménkového bitu
a na něm závislé přičítání hodnoty +1 způsobuje nevhodné dynamické vlastnosti sumátoru
založeného na použití inverzního zobrazení záporného čísla.

Pokud by výsledek byl záporný, přenosy nenastávají a není třeba prostý součet korigovat.

1.3.1.3 Zobrazení záporného čísla v doplňkovém kódu (Two’s Complement)

Obraz XC záporného čísla C v doplňkovém kódu je doplňkem do maximálně zobrazitelného


čísla zvětšeného o jedničku. Lze ho získat tak, že k inverznímu kódu přičteme k nejnižšímu
řádu jedničku. Přednost složitějšího doplňkového kódu vynikne při operacích slučování se
záporným výsledkem, kdy odpadá korekce záporného výsledku nezbytná při použití inverzního
kódu a záporná nula. Obraz XC záporného čísla C v doplňkovém kódu lze formálně vyjádřit
následujícím zápisem:
XC = Z n − C
Při aplikaci doplňkového kódu není třeba kladný výsledek korigovat, protože tento je v platném
tvaru a tím odpadají problémy popsané u inverzního kódování záporného čísla. Obdobně
výsledek odečtení většího čísla od menšího (výsledkem je záporné číslo) je v platném tvaru
doplňkového kódu, viz příklad níže:

file 10
Příklad:
Rozdíl dvou binárních čísel. Záporný výsledek je doplňkovém kódu:
1 1 1 1 1
+3 0 0 0 0 1 1 +9 0 0 1 0 0 1
−9 0+1 0+1 1 0 0 1 −3 0 0 0+1 0+1 1 1
−6 1 1 1 0 1 0 +6 0 0 0 1 1 0

1.3.1.4 Zobrazení záporných čísel v modifikovaném doplňkovém kódu

Modifikace představuje zdvojení znaménkového bitu. Správnost výsledku je indikována


shodou obou znaménkových bitů.
Poznámka:
Doplňkový kód získáme z přirozeného kódu také tak, že ponecháme všechny pravostranné log.0 a první log.1
v původním tvaru a všechny ostatní bity slova invertujeme. Tento algoritmus se používá u převodníků kódů.
Dříve uvedený postup je aplikován v aritmeticko-logických jednotkách (pro převod kódů je použit sumátor).
Příklad:
Vyjádřete záporné číslo v nejběžněji aplikovaných kódech
+ 12 0 0 0 0 0 0 0 0 1 1 0 0
− 12 - přirozený kód 1 0 0 0 0 0 0 0 1 1 0 0
− 12 - inverzní kód 1 1 1 1 1 1 1 1 0 0 1 1
− 12 - doplňkový kód 1 1 1 1 1 1 1 1 0 1 0 0
− 12 - modifikovaný doplňkový kód 1 1 1 1 1 1 1 1 1 0 1 0 0

1.3.2 Formáty čísel

V současné době převážná většina číslicových počítačů používá pro zobrazení čísel binární
polyadickou soustavu. Obrazy čísel vycházejí z potřeb zpracovávaných úloh a nejběžnější jsou
následující formáty:
• pevná řádová čárka,
• pohyblivá řádová čárka,
• binárně dekadický tvar (BCD).

Tyto formáty čísel jsou také součástí deklarací proměnných nezbytných zejména při použití
vyšších programovacích jazyků.

1.3.3 Formát čísel v pevné řádové čárce

Tento formát je analogií běžně používaného formátu čísel. Konkrétní realizace se liší kódem
zobrazení záporných čísel. Pokud potřebujeme pracovat se zlomkovou částí číslice, pak pro
jeho zobrazení se používá měřítko m. Měřítkem se násobí obraz čísla a tak dostáváme konkrétní
hodnotu čísla. Použití měřítka přináší dílčí problémy u operací násobení a dělení. U násobení
větších celých čísel může dojít k přetečení rozsahu (daného konstrukcí aritmeticko-logických
obvodů). U dělení zase ke ztrátě zobrazitelných řádů podílu. V obou případech je nezbytné
kontrolovat změny měřítka a tomu přizpůsobovat další postup výpočtů. V takovém případě je
výhodnější použít formát pohyblivé řádové čárky.
q bitů celé části čísla n-q bitů desetinné části čísla

 0 0 1 1 1 1 1 0 0 0 1 1 1
, ,
strojová řádová čárka řádová čárka měřítka

file 11
1.3.4 Formát v pohyblivé řádové čárce

V tomto formátu je používán semilogaritmický tvar zobrazení čísla, které umožňuje přímé
zobrazení čísel ve značném rozsahu velikostí.
F = S = m  Zexp
Hodnota m představuje tzv. mantisu, Z je základ zobrazení formátu pohyblivé řádové čárky
(často bývá definován jako číslo 16 - posun o elementární hodnotu exponentu pak představuje
4 binární řády mantisy) a číselné soustavy a exp vyjadřuje zkratku hodnoty exponentu. Pokud
je první platná číslice nenulová, hovoříme o normalizovaném tvaru čísla v pohyblivé řádové
čárce. V opačném případě o tvaru nenormalizovaném. Pro optimální využití zobrazovací
kapacity formátu dat je nezbytné používat normalizovaný tvar a jakýkoliv výsledek
aritmetických operací bezprostředně převádět do tohoto tvaru.

Pro zvolený základ číselné soustavy se ve formátu pohyblivé řádové čárky uvádí pouze
proměnné části čísla, tedy pouze mantisa a exponent jak je uvedeno v následujícím schéma:
 charakteristika mantisa
,
Mantisa je ukládána jako zlomkové číslo, přičemž první platná číslice 1 je uložena
v bezprostřední vzdálenosti za řádovou čárkou. Charakteristika je hodnota exponentu zvětšená
o polovinu maximálně zobrazitelného čísla vyčleněného pro uložení charakteristiky.
Poznámka:
Pokud je pro charakteristiku vyčleněno 7 bitů, pak exponent může nabývat hodnoty −64 až +63 a obrazem
charakteristiky je číslo exp + 64. Základem charakteristiky může být například číslo 16, tedy čtyři řády binárního
čísla. Příklad extrémních interpretací čísla 0,1xx...000111 je uveden níže.

 0 0 0 0 0 0 0 0 0 0 1 . . . . . . . . 0 0 0 1 1 1

0000000  -64 = (0-64)


A = + 0,1....7 * 16-64
 1 0 0 0 0 0 0 0 0 0 1 . . . . . . . . 0 0 0 1 1 1

1000000  0 = (64-64)
B = + 0,1....7 * 16 00
 1 1 1 1 1 1 1 0 0 0 1 . . . . . . . . 0 0 0 1 1 1

1111111  + 63 = (127-64)
C = + 0,1....7 * 16+63

Výše uvedená čísla v pohyblivé řádové čárce jsou uvedena v tzv. normalizovaném tvaru, což
znamená, že v první tetrádě, což je dáno základem charakteristiky, musí být libovolná číslice
mimo číslici 0.

Z tvaru čísla lze usuzovat na skutečnost, že s číslem ve formátu pohyblivé řádové čárky je nutno
pracovat ve třech krocích - jiné operace se provádějí s charakteristikou a jiné s mantisou.
V prvním kroku se pracuje s charakteristikou -podle typu operace se upraví mantisa. Ve druhém
kroku probíhají operace s mantisou. Konečně třetí krok představuje transformaci výsledku do
normalizovaného tvaru obrazu čísla v pohyblivé řádové čárce.
Poznámka:
Pro všeobecné použití je formát čísel v pohyblivé řádové čárce definován standardy IEEE 754 nebo DEC64

file 12
1.3.5 Formát čísel v binárně dekadickém tvaru (BCD)

Tento formát je blízký běžné dekadické číselné soustavě. Vznik tohoto formátu souvisí
především s potřebou zpracovávat znaky a čísla v alfanumerickém tvaru – viz kód ASCII
(American Standard Code for Information Interchange) – který je standardně používán pro
vstupní a výstupní zařízení číslicových systémů. Číslům jsou přiřazeny kódy obsahující ve
významově vyšší čtveřici bitů vždy tutéž kombinaci a ve významově nižší čtveřici bitů binární
kód dekadické číslice v běžném binárním tvaru s váhami 8421 (viz tabulka níže):
0 1 0 1 0 0 0 0 0
1 1 0 1 0 0 0 0 1
- 1 0 1 0 - - - -
8 1 0 1 0 1 0 0 0
9 1 0 1 0 1 0 0 1

Tabulka 1.1: ASCII kód čísel 0 až 9

Ze znakového tvaru čísla dostaneme BCD váhový kód 8421 čísla vypuštěním významově vyšší
čtveřice slabiky. Tuto operaci u výkonnějších počítačů vykonává specializovaná instrukce.
Poznámka:
Pro zpracování manuálně generovaných dat je možné navrhnout procesory pracující s čísly v BCD kódu,
přičemž aritmeticko-logická jednotka obsahuje BCD sčítačku pracující s BCD tvarem operandů. U těchto
procesorů odpadají převody kódů čísel, což v některých případech může být významným přínosem pro zvýšení
výkonnosti celého systému.

Jednotlivé číslice BCD - Binary Coded Decimal kódu jsou vyjádřeny množinou binárních
znaků. Pokud má každý řád binárního znaku svou váhu wi, pak mluvíme o váhovém BCD kódu
(často používané kódy viz níže uvedená tabulka). V praxi se lze setkat s celou škálou vah BCD
kódů. Komplementární kódy mají tu vlastnost, že číslice tvořící doplněk číslice 9 jsou si
navzájem inverzní (doplňky se vytváří záměnou 0 a 1) – viz Tabulka 1.2.

w3w2w1w0
dek.
8 4 2 1 5 4 2 1 2 4 2 1 6 4 2 -3 8 4 -2 -1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 1
2 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0
3 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 1
4 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0
5 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 1 1 0 1 1
6 0 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 0
7 0 1 1 1 1 0 1 0 1 1 0 1 1 1 0 1 1 0 0 1
8 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 0
9 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1
komplementární kódy
Tabulka 1.2: Tabulka několika typů váhového BCD kódu základních čísel
Poznámka:
Součet vah v komplementárním kódu má hodnotu 9.

V některých aplikacích je vyžadováno, aby použitý kód měl speciální vlastnosti (klasickým
případem je, aby nula nebyla vyjádřena nulovou kombinací, případně aby kód byl cyklický
apod.). Tyto požadavky jsou schopny splnit neváhové kódy. Tyto kódy však více nebo méně
komplikují provádění aritmetických a logických operací. Řády binárního znaku neváhového
BCD kódu nemají přiřazenu svou váhu – např. dva kódy uvedené dole – viz Tabulka 1.4.

file 13
(8421)+3 cyklický
0 0 0 1 1 0 0 1 0
1 0 1 0 0 0 1 1 0
2 0 1 0 1 0 1 1 1
3 0 1 1 0 0 1 0 1
4 0 1 1 1 0 1 0 0
5 1 0 0 0 1 1 0 0
6 1 0 0 1 1 1 0 1
7 1 0 1 0 1 1 1 1
8 1 0 1 1 1 1 1 0
9 1 1 0 0 1 0 1 0

Tabulka 1.3: Příklad komplementárního (8421+3) a cyklického BCD kódu

Tyto kódy jsou užívány pro své specifické zvláštnosti. Například kód (8421)+3 je
komplementárním kódem a navíc 0 je zobrazena nenulovou kombinací. Cyklický neváhový
BCD kód se vyznačuje tím, že sousední hodnoty se od sebe liší vždy pouze v jednom bitu (tento
kód se používá pro kódování vnitřních stavů asynchronních sekvenčních obvodů nebo pro
potřeby analog-číslo převodníků). Cykličnost eliminuje nežádoucí přechodové děje a vznik
hazardů jak kombinačních tak v sekvenčních číslicových obvodech. Kód uvedený v tabulce -
viz Tabulka 1.3 - je navíc reflexivní - je souměrný kolem osy mezi číslem 4 a číslem 5 mimo
nejvyššího řádu (zvýrazněno přerušovanou čarou).

Grayův kód
bin kód g3 g2 g1 g 0
0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1 symetrie kolem řádu g1
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0 symetrie kolem řádu g2
4 0 1 0 0 0 1 1 0
5 0 1 0 1 0 1 1 1
6 0 1 1 0 0 1 0 1
7 0 1 1 1 0 1 0 0 symetrie kolem řádu g3
8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
10 1 0 1 0 1 1 1 1
11 1 0 1 1 1 1 1 0
12 1 1 0 0 1 0 1 0
13 1 1 0 1 1 0 1 1
14 1 1 1 0 1 0 0 1
15 1 1 1 1 1 0 0 0

Tabulka 1.4: Tabulka Grayova kódu pro čtyř řádové číslo


Poznámka:
Vlastnosti cyklických kódů se s výhodou využívají pro kódování vnitřních stavů sekvenčních obvodů, kde
umožňují eliminovat vznik hazardů a taktéž pro buzení logických sítí pro potřeby testování nebo diagnostiky jak
trvalých tak občasných poruch metodami příznakové, časové nebo stavové analýzy.

Cykličnost kódu je možno zajistit i pro váhové kódy - dostáváme binární cyklický kód.
Příkladem je Grayův kód, který se snadno převádí do běžného binárního kódu a naopak.

file 14
Poznámka:
Všimněte si, že taktéž čísla 2n -1 a 0 se liší v pouze v jednom bitu.

Převod mezi binárním a Grayovým kódem lze popsat následujícími vztahy:


g i = b i  b i +1 pro i  < 0  n-2 >
g n −1 = b n −1
pro opačný převod se používají vztahy:
b i = g i  b i +1 pro i  < 0  n-2 >
b n −1 = g n −1

1.3.5.1 Převody mezi váhovým 8421 BCD kódem a binárním kódem navzájem

V této části budou popsány konverze mezi binárním kódem čísla a váhovým 8421 BCD kódem.
Převody na jiné typy BCD kódů mohou používat obdobné postupy, ale vyčíslování čísel
v kódech jiných než je váhový 8421 BCD kód je složitější díky komplikovanějšímu generování
obsahu jednotlivých tetrád. Jak bylo již uvedeno v předchozí kapitole, snadnější situace je při
použití Grayova kódu, u něhož je možné jednotlivé bity odvodit pomocí logické rovnice.
Vlastní realizace převodu může být provedena programově nebo technickými prostředky.

Převody z binárního do 8421 BCD kódu mohou být provedeny:


• přímým převodem SW čítačem,
• posuvy a korekcí (podle Hornerova schéma),
• čítačem,
• tabulkou.

Převody z 8421 BCD do binárního kódu mohou být provedeny obdobně:


• postupným násobením,
• posuvy a korekcí,
• čítačem,
• tabulkou.

Převody pomocí čítače nebo tabulky jsou ryze technické metody. Převody násobením a dělením
nebo posuvy a rotacemi patří spíše do aritmetických metod. Výběr metody převodu závisí od
konfigurace technického vybavení, přičemž každá z metod má své přednosti a nedostatky.

1.3.5.1.1 Převod z binární soustavy do váhové 8421 BCD soustavy pomocí programově
realizovaného čítače

Jedná se o jednoduchý, ale z hlediska času diskutabilní postup.

Převod se uskutečňuje po krocích, v nichž se opakovaně přičítá jednička do programově


realizovaného dekadického čítače a zároveň odečítá jednička od programově realizovaného
binárního čítače. Počet cyklů, potřebných pro převod je dán hodnotou binárního čísla.

Desítkový čítač reprezentuje programovatelný registr, jenž je programově rozdělen na tetrády


bitů. Pokud tetráda obsahuje číslo 9 (binárně 1001), pak se po přičtení provede dekadická
korekce – příslušná tetráda se vynuluje a přičte se jednička do vyšší tetrády.

Binární odečítací čítač lze realizovat pomocí dekrementace obsahu univerzálního registru.

file 15
V této konfiguraci převod končí v okamžiku, kdy binární čítač je vynulován.

1.3.5.1.2 Převod z binární soustavy do váhové 8421 BCD soustavy pomocí metody
posuvů a korekcí (Hornerovo schéma)

Každé binární číslo můžeme alternativně vyjádřit následujícím vztahem:


A = (.....((an-1*Z + an-2)*Z + an-3)*Z + ......... ai)*Z + ......... a1)*Z+ a0
Pokud na jednotlivé čtveřice bitů neaplikujeme dekadickou korekci, dostáváme tvar klasického
binárního čísla. Pokud provedeme dekadickou korekci, dostáváme váhový BCD kód.

Převod podle tohoto schéma lze provést se dvěma slovy uložených v posuvných registrech
(o jejich konstrukci bude pojednáno v dalších přednáškách) podle níže uvedeného obrázku.
Zdrojem operandu je slovo B, kam se ukládá n-bitové slovo v binárním tvaru. Výsledkem je
obsah slova D obsahující slovo o m čtyřbitových dekádách. Některé operace jsou společné pro
obě slova a především z tohoto důvodu budeme sloučená slova D a B označovat jako slovo H.
viz následující obrázek.
D B

dm-1 dm-2 .... .... .... .... .... .... .. d1 d0 bn-1 bn-2 . . . . . bi . . . b1 b0

Princip metody spočívá v předpokladu, že slovo D v binárním tvaru zobrazíme jako číslo Q
(celočíselný podíl hodnoty Z) plus zbytek po dělení r. Podle tohoto předpokladu lze číslo D
zapsat v následujícím tvaru:
D = Q*Z + r 1.10
Dělení je v tomto algoritmu nahrazeno posuvy a korekcemi obsahu jednotlivých tetrád.

První tetráda d0 čísla v BCD kódu vzniká posuvy spojených obrazů čísel B (číslo v binárním
tvaru) a D (číslo v BCD kódu) vlevo. Pokud toto číslo posuneme o jeden bit vlevo (tedy
vynásobíme dvěma) dostáváme:
2D = 2Q * Z + 2r + b 1.11
kde b je významově nejvyšší číslice binárního čísla B (podle schéma nahoře číslice na pozici
bn-1), které se po posuvu vlevo dostalo do nejnižšího bitu tetrády d0 ve slově D. Zbytek
představovaný vztahem 2r + b budeme označovat termínem dílčí zbytek. Další bity první
tetrády d0 BCD kódu dostáváme dalšími posuvy spojených registrů vlevo.

Protože první dílčí zbytek leží v tetrádě d0 registru D, musí jeho tvar respektovat pravidla kódu
BCD - tedy musí být menší než 9 (to je dáno tím, že hodnota základu váhového 8421 BCD
kódu je číslo 10). Pokud je obsah tetrády větší jak 9, je třeba provést korekci.

Také další číslice váhového 8421 BCD kódu vznikají posuvy spojených obrazů čísel B a D
vlevo o 4 řády a případnou korekci. Korekce se uplatní v případě, že aktuální dílčí zbytek je
větší než 9 (vznikl nepravý zbytek). Abychom dostali pravý zbytek, je nutno provést korekci
spočívající v odečtení konstanty 10 od tetrády s nepravým zbytkem a přičtení konstanty 1 do
vyšší tetrády BCD čísla. Tato korekce je ekvivalentní přičtení číslice 6 k nepravému zbytku
a zajištění přenosu mezi tetrádami.

file 16
Nezbytnost korekce signalizuje taktéž hodnota předchozího dílčího zbytku r  5. Budeme-li
chtít provádět korekci před posuvem, pak korekční konstanta je rovna číslici 3.

Postupně se tedy nejvyšší řády slova B (binární tvar) přesunují do nejnižších bitů slova D (obraz
v BCD kódu). Pokud je obsah libovolné tetrády větší nebo roven 5, provedeme jeho korekci
přičtením čísla 3, které po posuvu vlevo představuje přičtení hodnoty 6 a všechny číslice větší
jak 10 jsou touto korekcí transformovány do rozmezí hodnot vyčleněných kódu BCD.
Příklad 1:
Převeďte číslo B = 101111012 do váhového 8421 BCD kódu.
d2 d1 d0 b7 b6 b5 b4
b2 b1 b0 b3
1 0 1 1 1
1 0 1 start
1 0 1 1
0 1 1 1
shift left
1 0 1 1 1
1 1 0
shift left
1 0 1 1 1 1 0 shift left, d0. 5
1
0 0 1 1 +3
1 0 0 0 1 1 1 0 1 d0:= d0 + 3
1 0 0 0 1 1 1 0 1 shift left
1 0 0 0 1 1 1 0 1 shift left
1 0 0 0 1 1 1 0 1 shift left, d0. 5
0 0 1 1 +3
1 0 0 1 0 1 0 0 1 d0:= d0 + 3
1 0 0 1 0 1 0 0 1 shift left, d1. 5
0 0 1 1 +3
1 1 0 0 0 1 0 0 1 d1:= d1 + 3
1 1 0 0 0 1 0 0 1 shift left
1 8 9

1.3.5.1.3 Převod z váhového 8421 BCD kódu do binární soustavy s použitím metody
postupného násobení

Převod podle této metody je prováděn podle definice převodů mezi číselnými soustavami.
Protože je prováděn v binární soustavě, musí být i příslušné násobky vytvářeny v binární
soustavě.
Poznámka:
Vytváření mocnin 10 je v binární soustavě velmi zdlouhavé, a proto se častěji používá algoritmus vytváření
mocnin kombinací posuvů a sčítání.

Dílčí součet čísla v binárním tvaru získáme násobením příslušné tetrády mocninou deseti podle
vztahu - dm-1 * 10m-1. Konečnou hodnotu pak dostaneme jako výsledek součtu všech dílčích
součtů, což lze vyjádřit vztahem:
m −1
B=  d j  10 j 1.12
j= 1

kde všechny operace a proměnné jsou vyjadřovány v binárním kódu, což je dílčí komplikace
tohoto algoritmu. Výpočet binárního tvaru čísla v BCD kódu je uveden níže:
bA = dj
b B = d j  10 + d j−1 = b A + d j−1
b C = d j  102 + d j−1  101 + d j− 2 = b B  10 + d j− 2

file 17
přičemž na každý dílčí součet aplikujeme vztah 1.12. V binární číselné soustavě se výpočet
desetinásobku dílčího součtu nahrazuje součtem dvojnásobku a osminásobku tohoto dílčího
součtu. Následující dílčí součet vzniká součtem desetinásobku aktuálního dílčího součtu
a následující (o jeden řád méně významné) tetrády.
B D

bn=1 bn=2 . . . . bi . . . . b1 b0 dm-1 dm-2 d1 d0

H
Vztah 1.12 lze řešit jako iterace dílčích součtů podle dále uvedeného postupu:
bA = dj
b B = d j  10 + d j−1 = b A + d j−1
b C = d j  102 + d j−1  101 + d j− 2 = b B  10 + d j− 2
přičemž pro j-tý dílčí součet dostáváme vztah 1.12. V binární číselné soustavě se výpočet
desetinásobku dílčího součtu nahrazuje součtem dvojnásobku a osminásobku tohoto dílčího
součtu. Následující dílčí součet vzniká součtem desetinásobku aktuálního dílčího součtu
a následující (o jeden řád méně významné) tetrády.

Z popisovaného algoritmu je zřejmé, že převod je nahrazen součtem dílčích násobků a posuvy


v rámci již částečně převedeného slova. Postup je zřejmý z následujícího příkladu. Popisovaný
převod je možné provádět ve specializovaném převodníku nebo v částečně upraveném
sumátoru aritmetickologické jednotky.
Příklad 2:
Převeďte číslo D = 189BCD do binárního kódu.
b7 b6 b5 b4 b3 b2 b1 b0 d2 d1 d0
0 0 0 1 1 0 0 0 1 0 0 1 start
0 0 0 1 1 0 0 0 1 0 0 1 d2 to conversion
0 0 0 1 0 2*B
0 0 0 1 0 0 0 8*B
0 0 0 1 0 1 0 10*d2
1 0 0 0 1 0 0 1 d1 to conversion
0 0 1 0 0 1 0 B+d1
0 0 1 0 0 1 0 0 2*B
1 0 0 1 0 0 0 0 8*B
1 0 1 1 0 1 0 0 100*d2+10*d1
1 0 0 1 d0 to conversion
1 0 1 1 1 1 0 1 100*d2+10*d1+d0
128 32 16 8 4 1

1.3.5.1.4 Převod z váhového 8421 BCD kódu do binární soustavy s použitím posuvů
a korekcí

Tento postup je obdobou předchozího algoritmu, ale násobení 10 je provedeno odlišným


způsobem.

Pokud použijeme stejnou symboliku jako v předchozích příkladech, pak tento algoritmus
můžeme popsat jako postupné přesouvání obsahu slova D od významově nejvyššího řádu do
slova B, přičemž jsou korigovány obsahy všech tetrád slova D.
D B

dm-1 dm-2 .... .... .... .... .... .... .. d1 d0 bn=1 bn=2 . . . . . bi . . . . b1 b0

H
file 18
Slovo D je posouváno vpravo a po každém posunu je kontrolován obsah jednotlivých tetrád
BCD čísla. Pokud je obsah tetrády  5, pak před dalším posuvem je nutno provést korekci
odečtením konstanty 3 (ekvivalentní úpravou je přičtení konstanty 13, přičemž jsou uvažovány
přenosy pouze uvnitř tetrád, tedy není prováděn přenos do nejnižšího řádu vyšší tetrády). Tyto
operace je nutno provádět paralelně ve všech tetrádách BCD čísla, viz následující příklad. Pro
demonstraci tohoto algoritmu bude použito příkladu se stejnými čísly jako v předchozích
příkladech, přičemž doposud jsme pracovali pouze s celými čísly.
Příklad 3 - celých čísel:
Převeďte číslo D = 189BCD do binárního kódu pomocí algoritmu posuvů a korekcí.
d2 d1 d0 b7 b6 b5 b4 b3 b2 b1 b0
1 1 0 0 0 1 0 0 1 start
1 1 0 0 0 1 0 0 1 shift right, d1  5
1 1 0 1 +13 correction
1 0 0 1 0 1 0 0 1 korekce d1
1 0 0 1 0 1 0 0 1 shift right, d0  5
1 1 0 1 +13 correction
1 0 0 0 1 1 1 0 1 korekce d0
1 0 0 0 1 1 1 0 1 shift right
1 0 0 0 1 1 1 0 1 shift right
1 0 0 0 1 1 1 0 1 shift right, d0  5
1 1 0 1 +13 correction
0 1 0 1 1 1 1 0 1 korekce d0
0 1 0 1 1 1 1 0 1 shift right
0 1 0 1 1 1 1 0 1 shift right
0 1 0 1 1 1 1 0 1 shift right
1 8 9 128 32 16 8 4 1
Desetinné části reálných číslic se převádí podobným způsobem, pouze je dělení nahrazeno
násobením a naopak (obdoba převodu celých a desetinných částí reálných čísel při převodu
mezi jednotlivými číselnými soustavami) - viz následující příklad.
Příklad 4 - převod zlomkových čísel:
Převeďte číslo D = 0,76BCD do binárního kódu pomocí posuvů a korekcí.
b7 b6 b5 b4 b3 b2 b1 b0 d-1 d-2
0 1 1 1 0 1 1 0 start
0 0 1 1 0 0 1 1 d-1 a d-2  5
1 0 1 0 1 0 0 1 korekce +3
1 0 1 0 1 0 0 1 shift left
0 0 1 1 d-1  5
1 1 0 0 0 0 0 1 korekce +3
1 1 0 0 0 0 0 1 shift left
1 1 0 0 0 0 0 1 shift left
0 0 1 1 d-2  5
1 1 0 0 0 0 0 1 0 1 1 korekce +3
1 1 0 0 0 0 0 1 0 1 1 shift left
0 0 1 1 d-2  5
1 1 0 0 0 0 0 1 1 0 0 1 korekce +3
1 1 0 0 0 0 0 1 1 0 0 1 shift left
1 1 0 0 0 0 0 1 1 0 0 1 shift left
0 0 1 1 d-1  5
1 1 0 0 0 0 1 0 0 1 0 1 korekce +3
1 1 0 0 0 0 1 0 0 1 0 1 shift left
0 0 1 1 d-2  5
1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 korekce +3
1 1 0 0 0 0 1 0 0 1 0 1 0 1 1 shift left
0,5 0,25 0,125 0,06 0,03 0,01 0,00 0,7 0,06
25 125 5625 781
25

file 19
Tento příklad ukazuje, jak lze převádět desetinné části reálných čísel (za použití zákona duality
lze odvodit algoritmy i pro další varianty převodu).

1.3.5.1.5 Převod obvodově realizovaným čítačem

Tato metoda je založena na využití technického vybavení a je vhodná především pro převody
mezi binární soustavou BCD kódem s nealgoritmickým nebo algoritmicky složitě
odvoditelným kódem (pokud je použit neváhový BCD kód nebo jiný než váhový 8421 BCD
kód).

DATA

zápis do čítače 1 čtení čítače 2

CLK - čítač 1- zdrojový kód převáděného CLK + čítač 2- cílový kód převáděného
f ref čísla (odečítací) čísla (přičítací)
&

HW stop nulování čítače 2


detektor nuly - komparátor

Obrázek 1.1: Blokové schéma technického vybavení pro převod čísel mezi dvěma
číselnými soustavami pomocí čítačů.

Princip činnosti je založen na dvojici synchronně řízených čítačích. Do prvního čítače je


umístěn převáděný kód a ve druhém čítači je generován vytvářený kód. Čítač převáděného kódu
je zapojen jako odečítací čítač pracující v kódu převáděné číselné soustavy. Čítač generovaného
kódu je navržen jako čítač vpřed pracující v kódu generované číselné soustavy. Před startem se
do čítače převáděného kódu nahraje převáděné číslo a čítač generovaného kódu se vynuluje. Po
spuštění převodu je obsah čítače převáděného kódu snižován a čítač generovaného kódu
synchronně zvyšován. Převod končí po dosažení 0 v čítači převáděného kódu.

Tato metoda je schůdná pro menší čísla. Pro velká čísla je neúměrně časově náročná, i když pro
nealgoritmické číselné soustavy relativně snadno realizovatelná. Blokové schéma převodníku
kódů je uveden výše - viz Obrázek 1.1.

1.3.5.1.6 Převody tabulkou

Tato metoda je obdobou klasické tabulkové metody vyčíslování funkčních hodnot. V tomto
případě je argumente funkce adresou řádku tabulky (paměti) a hodnota funkce je obsahem
vybrané paměti. Převáděné (zdrojové) číslo představuje adresu tabulky, která může být
lokalizována v operační paměti nebo v jednoúčelové paměti. Obsah adresovaného paměťového
místa obsahuje převedenou hodnotu (cílový obraz) čísla v požadované číselné soustavě.

Zásadní nevýhodou této metody je přímá úměrnost nezbytné kapacity paměti na velikosti
převáděných čísel. Obecně je počet adres dán kapacitou kódu obrazu čísla v převáděné
(zdrojové) soustavě a délka slova kapacitou kódu v převedené (cílové) soustavě. Prostou
logickou úvahou lze usoudit, že pro slova o délce 32 bitů je prakticky nepoužitelná (tabulka by
si vyžadovala 232 adres, což i při dnešní stavu výroby pamětí je na mezi aplikovatelnosti).

file 20
Pokud by zdrojovým kódem byl BCD kód, bylo by možno použít sérioparalelní postup převodu
a tímto způsobem ušetřit nezbytnou kapacitu paměti. Pokud by cílovým kódem byl normální
binární váhový kód, pak by bylo nezbytné použít aritmeticko-logickou jednotku pro výpočet
cílového tvaru převáděného čísla.
Metoda aplikace převodní tabulky je efektivní pro kódy s nealgoritmickou metodou převodu
mezi jednotlivými číselnými soustavami. Blokové schéma technického vybavení nezbytného
pro převod čísel je uveden níže - viz Obrázek 1.2.

zdrojový obraz čísla


paměť
adresová sběrnice paměti
cílový kód čísla

dekodér adresy
datová část sběrnice

cílový obraz čísla

Obrázek 1.2: Schéma technického vybavení pro převod čísel tabulkou

file 21
Seznam obrázků

Obrázek 1.1: Blokové schéma technického vybavení pro převod čísel mezi dvěma číselnými
soustavami pomocí čítačů. ............................................................................................... 20
Obrázek 1.2: Schéma technického vybavení pro převod čísel tabulkou .................................. 21

Seznam tabulek

Tabulka 1.1: ACCII kód čísel 0 až 9 ....................................................................................... 13


Tabulka 1.2: Tabulka několika typů váhového BCD kódu základních čísel ........................... 13
Tabulka 1.3: Příklad komplementárního (8421+3) a cyklického BCD kódu .......................... 14
Tabulka 1.4: Tabulka Grayova kódu pro čtyř řádové číslo ...................................................... 14

file 22

You might also like