Zobrazení čísel v počítači

Website: Moodle ZČU
Kurs: KVD/UIN Úvod do informatiky pro vzdělávání - šablona
Buch: Zobrazení čísel v počítači
Gedruckt von: Nepřihlášený host
Datum: Sonntag, 8. November 2026, 18:29

1. Zobrazení celých čísel

V počítači se operuje s binárními čísly, což má dobré opodstatnění v mnoha ohledech, k nimž se budeme střídavě vracet.

Nyní se pouze pokuste odpovědět na otázku, jaké dva problémy je třeba obecně při zobrazování vyřešit?

V této kapitole se postupně podíváme na dva způsoby zobrazení celých čísel.

1.1. Přímý kód

Přímý kód je jednou z forem zobrazení celých čísel v počítači. Základní informace o způsobu zobrazení a zařazení znaménka v binárním čísle a o rozsahu zobrazitelných čísel v tomto kódu vidíte na obrázku níže. Pozice, které za nejvýznamnějším místem zbývají k zobrazení hodnoty čísla z dekadické soustavy, se zaplní prostým převodem, s nímž jste se seznámili ve studijní kapitole o převodu čísla z desítkové do jiné soustavy.


Obr. 1: Obecné schéma k zobrazení čísla v přímém kódu.

 Proč se číslo 6310 z desítkové soustavy zobrazí v přímém kódu na 8 míst binárně jako 001111112PK?

 Jak poznáte, že číslo zobrazené v přímém kódu na 8 míst jako 101010102PK, bylo v desítkové soustavě původně −4210?

 V čem je ošemetnost přímého kódu?

1.2. Kladná čísla ve dvojkovém doplňku

Základní informace o dvojkovém doplňku můžete vidět na obrázku níže.


Obr. 2: Schéma tvorby dvojkového doplňku.

 V čem tkví první zřejmý rozdíl mezi zobrazením v přímém kódu a ve dvojkovém doplňku?

Dvojkový doplněk pro zobrazení celých čísel využívá v oblasti kladných čísel přímý kód. Způsobem zobrazení záporných čísel se ovšem liší. V obou případech platí, že nejvýznamnější pozice slouží pro zobrazení znaménka.

 Jak se ve dvojkovém doplňku zobrazí na osm míst číslo 6310?

1.3. Záporná čísla ve dvojkovém doplňku

Zobrazení záporných čísel ve dvojkovém doplňku se od zobrazení stejných čísel v přímém kódu liší v zobrazení čísla na zbývajících místech za nejvýznamnější pozicí, na které bude 1. K určení výsledné podoby zobrazeného záporného čísla ve dvojkovém doplňku můžete dojít dvěma cestami.

Technický převod

Hardwarově bývá převod záporného čísla realizován způsobem, který lze matematicky zapsat následujícím způsobem:

  1. Provedete převod kladného čísla z desítkové soustavy do dvojkové v podobě přímého kódu na požadovaný počet m míst.
  2. Invertujete cifry na všech pozicích (místo 0 zapíšete 1 a naopak). V tomto kroku je číslo převedeno do inverzního kódu, což je další způsob zobrazení celých čísel, který se většinou samostatně nevyužívá.
  3. Přičtete 1.

Pravidla základních matematických operací ve dvojkové soustavě si můžete prohlédnout na obrázku níže. Při součtu dvou jedniček dochází k přenosu jedničky do vyššího řádu (jedná se o analogii, jako když v desítkové soustavě sčítáte cifry na odpovídajících si pozicích a získáte číslo větší než devět).


Obr. 3: Základní matematické operace ve dvojkové soustavě.

 Proč se číslo −6310 z desítkové soustavy zobrazí ve dvojkovém doplňku na 8 míst jako 110000012DD? Proveďte odvození technickým převodem.

Při zjištění, jaké číslo se ve dvojkovém doplňku zobrazilo, budete postupovat opačným způsobem.

 Jak zjistíte, že číslo zobrazené ve dvojkovém doplňku na 8 místech jako 101010102DD bylo původně v desítkové soustavě −8610? Postupujte inverzně v rámci technického převodu.

Převod přes kapacitu

Pro zjištění podoby zobrazení záporného čísla ve dvojkovém doplňku můžete také využít kratší způsob s kapacitou dvojkové soustavy o zadaném počtu míst m L = 2m:

  1. Přičtete zobrazované záporné číslo ke kapacitě dvojkové soustavy o zadaném počtu míst m.
  2. Získané číslo převedete jako celek do dvojkové soustavy některým ze způsobů, které jsme zmiňovali ve studijní kapitole.

 Proč se číslo −11110 z desítkové soustavy zobrazí ve dvojkovém doplňku na 8 míst jako 100100012DD? Proveďte odvození technickým převodem.

Při zjištění, jaké číslo se v dvojkovém doplňku zobrazilo, budete postupovat opačným způsobem.

 Jak zjistíte, že číslo zobrazené ve dvojkovém doplňku na 8 místech jako 100000002DD bylo původně v desítkové soustavě −12810? Postupujte inverzně v rámci převodu přes kapacitu.

1.4. Sčítání čísel s různými znaménky ve dvojkovém doplňku

Významnou výhodou dvojkového doplňku vůči přímému kódu je odčítání, které můžeme chápat jako sčítání čísel s různými znaménky. Pokud při něm dojde k přetečení, můžeme ho zanedbat, aniž by to ovlivnilo výsledek.

Sčítání čísel s opačnými znaménky v 2DD.
Obr. 4: Schéma sčítání čísel s opačnými znaménky ve dvokovém doplňku.

 Přesvědčte se součtem čísel 6310 a −6310 zobrazených ve dvojkovém doplňku na osmi místech, že je výše uvedené schéma platné a získáte očekávaný výsledek, kterým je samozřejmě 0.

1.5. Cvičení k zobrazení celých čísel

Určete, jak se zobrazí následující čísla v přímém kódu i dvojkovém doplňku na osmi místech.

  1. 5310
  2. −10410

Napište, jaká čísla se zobrazila v přímém kódu, resp. dvojkovém doplňku.

  1. 011001102PK
  2. 110110012DD

Proveďte součet obou čísel v prvním i druhém příkladu ve dvojkovém doplňku.

Ve všech příkladech zapište postupy.

Tipy pro řešení

Pro řešení prostudujte předchozí studijní články. Vyzkoušejte si různé postupy, kde je to možné, abyste zjistili, který budete raději používat.

Návrh řešení

Návrh řešení si vždy prohlédněte až potom, co se pokusíte o nějaké vlastní.

 5310 = ?2PK = ?2DD.

 −10410 = ?2PK = ?2DD.

 011001102PK = ?10.

 110110012DD = ?10.

 Součet prvních dvou čísel ve dvojkovém doplňku.

 Součet druhých dvou čísel ve dvojkovém doplňku.

1.6. Shrnutí

 Ve studijní knize jste poznali několik typů zobrazení celých čísel v počítači. Při zobrazování čísel v počítači nezapomeňte, že potřebujete vždy vědět, na jaký počet míst zobrazení probíhá, protože je tím ovlivněn rozsah zobrazitelných čísel. Samozřejmě je třeba vědět, co se znaménkem. Přímý kód je nešikovný pro hardwarovou implementaci kvůli složité operaci sčítání, při němž často může docházet k přetečení.

Zobrazení čísel ve dvojkovém doplňku se od zobrazení v přímém kódu liší pouze ve způsobu zobrazení záporných čísel. Zobrazení můžete realizovat způsobem, který kopíruje technické provedení a zahrnuje v sobě jako prostředníka inverzní kód, jako další příklad zobrazení celých čísel v počítači. Druhým způsobem, který je pro lidské chápání rychlejší a jednodušší, je využití kapacity soustavy na určitém počtu míst.

V oblasti technického provedení je u dvojkového doplňku také důležité, že díky převodu odčítání na sčítání čísel s opačnými znaménky se ušetří logické obvody (není třeba realizovat odčítačku a pamatovat si přenos u přetečení).

Zdroje

Další informace k tématu zobrazení čísel ve dvojkovém doplňku můžete nalézt mezi jinými i v tomto zdroji.

  • ANTOŠOVÁ, Marcela a Vratislav DAVÍDEK. Číslicová technika. České Budějovice: Kopp, 2003, 305 s. ISBN 80-7232-206-0.

2. Zobrazení čísel v pohyblivé řádové čárce

Doposud jsme se zabývali pouze zobrazením celých čísel. V první části e-kursu jste si ovšem procvičovali převody z desítkové do binární soustavy a naopak i u čísel s řádovou čárkou. Je samozřejmé, že i tato čísla chceme v počítači zobrazovat. Obecně se pro zobrazení desetinného čísla v pohyblivé řádové čárce (floating point) vychází z jeho zápisu v semilogaritmickém tvaru H10 = c × 10e, kde:

  • c je číslo obvykle upravené tak, aby před řádovou čárkou byla pouze jedna cifra se znaménkem;
  • e je exponent.

 Kde jste se s tímto stylem zápisu mohli setkat?

Semilogaritmický tvar si pro zobrazení desetinného čísla v binární soustavě upřesníme na: H10 = (−1)s × m × 2e, kde:

  • s je znaménko (0 pro kladné číslo, −1 pro záporné číslo).
  • m je mantisa (číslo mající před desetinnou čárkou 1).
  • e je exponent (na který je umocněn základ soustavy, do níž převádíme).

 Očekáváte, že do uvedeného tvaru lze převést jakékoli reálné číslo?

Podobně jako u celých čísel potřebujeme určit způsob reprezentace znaménka a počet míst, na který bude číslo z desítkové soustavy zobrazeno. V průběhu let bylo vytvořeno více reprezentací zobrazení desetinných čísel, které se lišily např. pořadím uložení jednotlivých částí. Podrobněji si představíme jeden z nich, který se používá již skoro 40 let.

2.1. Standard IEEE 754

V roce 1985 se podařilo IEEE (The Institute of Electrical and Electronics Engineers – Institut pro elektrotechnické a elektronické inženýrství) standardizovat formát zobrazení čísel s desetinnou čárkou, který je znám pod zkratkou IEEE 754. Poslední aktualizací prošel v roce 2019.  Jednotlivé části upřesněného semilogaritmického tvaru se v něm zobrazují v pořadí: s|e|f, kde f značí fraction (část mantisy za desetinnou čárkou, přičemž platí, že m = f + 1).

Formáty

V průběhu let se ve standardu objevily tři standardní formáty zobrazení desetinných čísel do binární podoby, jak popisuje obrázek níže. Ve všech formátech je pro znaménko vyhrazeno první místo, za nímž následuje na různý počet míst zobrazený exponent a za ním opět na různých počet míst zobrazená fraction. Používají se pro ně i následující názvy:

  • Jednonásobná přesnost (binary32 s 8 místy pro exponent a 23 místy pro fraction).
  • Dvojnásobná přesnost (binary64 s 11 místy pro exponent a 52 místy pro fraction).
  • Čtyřnásobná přesnost (binary128 s 15 místy pro exponent a 112 místy pro fraction).

Specifika a binární formáty IEEE 754.
Obr. 5: Popis specifických případů a binárních formátů používaných v IEEE 754.

Ve standardu jsou dále specifikovány dva desítkové formáty. V rámci výpočtů se též někdy využívá 80místný rozšířený formát.

Specifické případy

Ve standardu IEEE 754 jsou řešeny i specifické případy, které mohou vyplynout např.  z různých matematických operací:

  • Není překvapivé, že číslo nula je zobrazeno tak, že se na všech místech objeví 0. Nemusí to platit pouze pro první místo, na kterém se může objevit i 1. Tím se nám zde vrací problém dvou 0, jako tomu bylo u přímého kódu. Znaménko u 0 se projevuje v některých operacích (pokud by např. nějaká operace vedla na dělení nulou). V mnoha případech ovšem důležité není a tudíž se v binárních formátech zobrazení často počítá pouze s tzv. kladnou 0.
  • U nekonečna má znaménko větší důležitost, což je dáno logicky pohledem na číselnou osu, jak ji vnímáme. Důležité je také množství operací, které k plus nebo mínus nekonečnu mohou vést. Může se jednat o různé limity, afinity, přičítání nekonečna apod.
  • Zkratka NaN značí Not a Number. Jde tedy o situace, kdy výsledkem nějaké početní operace není číslo. Standard IEEE 754 rozlišuje dvě podoby NaN. U quiet NaN je na prvním místě fraction 1 (používá se pro zpětnou diagnostiku zděděných informací z neplatných nebo nedostupných dat a výsledků operací). U signaling NaN je na prvním místě fraction 0, zatímco alespoň jedna 1 se musí objevit na některém ze zbývajících míst fraction (používá se pro reprezentaci neinicializovaných proměnných a může být vyhrazen i pro operandy signalizující výjimky při neplatné operaci).

 Jaké výpočty mohou vést k některému z nekonečen nebo k NaN?

 Proč je důležité, aby u signaling NaN bylo některé z dalších míst fraction za prvním nenulové?

2.2. Zobrazení čísel v IEEE 754 v binary32

Zobrazení čísla H10 ve formátu binary32, které nevede na některý ze specifických tvarů popsaných v předchozí kapitole, je popsáno na obrázku níže.


IEEE754 do binary32.
Obr. 6: Schéma převodu desetinného čísla dle standardu IEEE 754 ve formátu binary32.

Postup převodu v jiných binárních formátech by se lišil ve dvou věcech. První z nich je počet míst u jednotlivých částí zobrazeného čísla.

Dále si na obrázku všimněte, že se zde objevuje nový typ zobrazení celého čísla z desítkové do binární soustavy, který jsme si doposud nepředstavili. Jde o kód s posunutou nulou, který je použitý pro zobrazení exponentu. Před převodem do binární soustavy k exponentu nejprve přičítáme hodnotu, která se liší podle použitého formátu:

  • binary32: e = e + 127.
  • binary64: e = e + 1023.
  • binary128: e = e + 16383.

 Proč je užitečné, že se pro převedení exponentu používá kód s posunutou nulou a nikoli některé ze zobrazení celých čísel uvedených v první kapitole?

 Jaký je maximální exponent, který můžeme v jednotlivých binárních formátech získat?

Příklad

Pokud chcete zobrazit ve formátu s jednonásobnou přesností ve standardu IEEE 754 číslo H10 = 28,125, uděláte to následujícím způsobem.

1. Číslo zapíšete v semilogaritmickém tvaru, což předpokládá určit hodnoty s, e a m:

  • Kladné znaménko signalizuje, že s = 010.
  • Exponent e určíme tak, aby platilo, že 2e+1> 28,12510 ≤2e. Tudíž e = 410.
  • Mantisu m určíme po dosazení ze vztahu 28,125 / 24 = 1,757812510.

Semilogaritmický tvar, který potřebujeme, je tedy následující: 28,12510 = (−1)0 × (1 + 0,7578125) × 24.

2. Na první místo zobrazíte znaménko s = 02.

3. Exponent zobrazíte v kódu s posunutou nulou přičtením čísla 12710.

  • 410 + 12710 = 13110.
  • Převod na osm míst provedete některým ze způsobů, které již znáte z příslušné kapitoly.
  • Výsledný tvar zobrazeného exponentu: 100000112PN.

4. Mantisu si můžete dovolit zapsat ve tvaru 1 + 0,7578125 a následně zobrazit na zbývající počet míst pouze zlomkovou část (nazývanou fraction) za desetinnou čárkou.

  • Převod fraction do dvojkové soustavy provedete jedním ze známých způsobů příslušné kapitoly.
  • f = 11000012.
  • Doplníte na požadovaný počet 23 míst zprava a tudíž: f = 110000100000000000000002.

5. Číslo 28,12510 se v jednonásobném formátu standardu IEEE 754 zobrazí tedy jako: 010000011110000100000000000000002IEEE754

 Proč je možné říci, že mantisa vždy vyjde 1,..., a jaký to má důsledek?

Jestliže se při zobrazování mantisy (resp. její části fraction) vytvoří binární číslo s neukončeným, nebo periodickým rozvojem za řádovou čárkou poskytuje standard IEEE 754 několik možností, jak situaci řešit. Počet míst pro fraction je ve všech formátech totiž pevně daný. Na nastalou situaci se obvykle reaguje přičtením 1.

 Přijdete na alternativní možnost zobrazení mantisy (resp. její části fraction)?

2.3. Zobrazená čísla ve formátu binary 32 standardu IEEE 754

Při pokusu o zjištění, jaké číslo z desítkové soustavy se zobrazilo v binárním formátu s určitou přesností dle standardu IEEE 754 použijete inverzní kroky oproti těm z předchozí kapitoly. Pro číslo zobrazené ve formátu binary32 vše shrnuje následující obrázek:

Z binary32 do 10 v IEEE 754
Obr. 7: Schéma pro zjištění čísla, které se zobrazilo ve formátu binary32 ve standardu IEEE 754.

Obecně budete postupovat takto:

  1. Podle nejvýznamnějšího místa poznáme znaménko s (0 = +; 1 = −).
  2. Určitý počet pozic za nejvýznamnějším místem (dle formátu 8, 11 nebo 15) tvoří exponent e, který je třeba převést zpět do desítkové soustavy (způsob si připomeňte v případě potřeby v příslušné studijní kapitole). Od získaného čísla podle formátu odečtete hodnotu 127, 1023 nebo 16383 v desítkové soustavě (exponent byl zobrazen v kódu s posunutou nulou).
  3. Číslo na zbývajících místech opět převedete známým způsobem do desítkové soustavy, čímž získáte hodnotu fraction.
  4. Dosadíte za s, e, f do vztahu: H10 = (−1)s × (1 + f) × 2e a vypočteme číslo, které bylo dle standardu IEEE 754 zobrazeno.

Příklad

Pokud chcete zjistit, jaké číslo se zobrazilo ve formátu s jednonásobnou přesností ve standardu IEEE 754 jako 110000100101001100110011001100112IEEE754, uděláte to následujícím způsobem.

1. Číslo si rozdělíte na tři části 1|10000100|101001100110011001100112IEEE754.

2. Znaménko:

  • První místo 12 určuje, že číslo v desítkové soustavě bylo záporné, protože (−1)1 = −110.

3. Exponent:

  • Následujících osm míst 100001002 dá po převodu do desítkové soustavy číslo 13210.
  • Pokud chcete získat správnou hodnotu exponentu, musíte ještě odečíst číslo 12710 a zjistíte, že e = 510.

4. Fraction:

5. Mantisa:

  • K fraction přičtete 110, čímž získáte mantisu 1,6499999761581420898437510.

6. Výsledek:

  • Dosadíte do semilogaritmického tvaru H10 = (−1)1 × 1,64999997615814208984375 × 25.
  • Výpočtem zjistíte, že se zobrazovalo číslo 52,79999923706054687510.

Je uvedené číslo v desítkové soustavě opravdu tím, které do zobrazení vstupovalo?

2.4. Cvičení k zobrazení čísel v IEEE 754

  1. Zjistěte a zapište i s postupem, jak se zobrazí číslo −101,8510 podle standardu IEEE 754 ve formátu s jednonásobnou přesností.
  2. Zjistěte a zapište i s postupem, jaké číslo se zobrazilo dle standardu IEEE 754 ve formátu binary32 takto: 3DE4000016IEEE754.

Tipy pro řešení

Podívejte se na postupy popsané v předchozích kapitolách i v předchozím tématu e-kursu. Základem je využít znalosti, na kolik míst se zobrazuje znaménko, exponent a část mantisy fraction. Důležité je uvědomit si, že exponent se zobrazuje ve speciálním kódu. Vše ostatní už jenom o převodech.

Návrh řešení

Návrh řešení si prohlédněte až potom, co se pokusíte o nějaké vlastní.

−101,8510 = ?2IEEE754binary32.

3DE4000016IEEE754 = ?10.

2.5. Shrnutí

 Ve studijní knize jste poznali a vyzkoušeli si&nbps;práci se zásadním standardem pro zobrazování desetinných čísel. Ve standardu IEEE 754 jde o aproximaci reálných čísel. Vychází se z upraveného semilogaritmického tvaru, v němž je odděleno znaménko, mantisa a exponent.

Seznámili jste se s binárními formáty zobrazení. Podobně jako u zobrazení celých čísel se ve standardu IEEE 754 pracuje s pevným počtem míst, která mají svůj význam a v normalizované podobě pevně dané pořadí.

Standardem se řídí většina typů procesorů i programovací jazyky, které znáte.

Zdroje

Další informace k tématu zobrazení čísel v pohyblivé řádové čárce najdete nejlépe přímo ve standardu samotném, k nmuž máte on-line přístup přes univerzitní knihovnu.

3. Typové příklady ze zobrazení čísel k 1. testu

  1. Porovnejte číslo zobrazené v přímém kódu 001011112PK s číslem zobrazeným ve dvojkovém doplňku 100011012DD. Všechny postupy zapište.
  2. Napište, jak se zobrazí čísla 7510 a −3310 ve dvojkovém doplňku. Proveďte v něm jejich součet. Všechny postupy zapište.
  3. Napište, jak se zobrazí ve formátu binary32 standardu IEEE 754 číslo 48,812510. Všechny postupy zapište.
  4. Napište, jaké číslo se zobrazilo ve formátu s jednonásobnou přesností podle standardu IEEE 754 jako 110001000101111000000000000000002IEEE754binary32. Všechny postupy zapište.

Tipy pro řešení

U prvního příkladu se nejprve zkuste podívat na znaménka, jestli vám rovnou nenapoví.

U druhého příkladu nezapomeňte, že sčítání čísel s opačnými znaménky má výhody, pokud jde o případné přeteční.

U třetího a čtvrtého příkladu nezapomeňte na potřebu využití semilogaritmického tvaru a pořadí znaménka, exponentu a fraction z mantisy.

Pokud se rozhodnete pro řešení v MS Excel, můžete využít funkce MOD(), POWER(), USEKNOUT(), užitečné též mohou být funcke ČÁST() a CONCAT(). Využít již můžete i funkce, které převádí mezi některými soustavami v rámci celých čísel přímo, jako jsou BIN2DEC(), DEC2BIN() apod. Nezapomeňte, že u nich můžete zadat jako parametr i počet míst, na  která chcete číslo převést

Návrh řešení

Postup řešení tentokrát cíleně nenabízíme, abyste nebyli neustále zbytečně ovlivňováni. Pokud byste si zvoleným postupem nebyli jisti, samozřejmě kontaktujte vyučujícího (tutora). Po kliknutí zjistíte pro kontrolu alespoň výsledky, ale podívejte se na ně, až po pokusu o vlastní řešení.