V běžném životě jsme zvyklí zapisovat čísla v desítkové soustavě, ve které používáme deset různých cifer a jejich pozice odpovídá mocninám desítky. Tedy například 358 značí osm jednotek, pět desítek a tři stovky. To je jeden z mnoha možných způsobů kódování.

Jak bychom mohli zakódovat 358 jinak? Třeba tak, že bychom udělali tři sta padesát osm čárek vedle sebe. Nebo bychom se mohli domluvit, že drak bude znamenat sto, prase padesát a zajíc dvojku. Potom bychom 358 mohli znázornit obrázkem, na kterém budou tři draci, prase a čtyři zajíci.

Počítače ovšem draky a prasata nepoužívají. Pro počítače se nehodí ani desítková soustava, protože počítače nemají deset prstů. Zato umí dobře rozlišovat mezi dvěma stavy (aktivní a neaktivní). Proto se pro kódování čísel v počítači používá především binární (dvojková) soustava, ve které se používají pouze dvě cifry: 0 a 1.

Základní princip binární soustavy není nijak specifický pro počítače. Jde o matematický princip „poziční soustavy“, která funguje obecně. Můžete ji použít třeba na počítání na prstech, což vám umožní na prstech jedné ruky počítat od 0 až do 31. Také počítání v binární soustavě (sčítání, odčítání, násobení) je obecný princip, který funguje podobně jako počítání v naší obvyklé desítkové soustavě.

Pro kódování záporných a desetinných čísel už je potřeba zajít do detailů, které jsou trochu specifické pro počítače (kolik bitů paměti pro čísla vyčleníme, jak je přesně využijeme).

Kromě binární soustavy v informatice občas narazíme i na soustavy založené na mocninách dvojky, například osmičkovou či šestnáckovou soustavu. Konkrétně hexadecimální (šestnáckovou) soustavu můžeme často potkat při práci s RGB barvami.

Binární čísla: základy

Přejít ke cvičením na toto téma »

Princip binární soustavy

V binární (dvojkové) soustavě zapisujeme čísla pouze pomocí dvou číslic: 0 a 1. Pozice každé číslice v zápisu odpovídá určité mocnině dvojky. Mocniny vždy začínají nultou mocninou u číslice nejvíc vpravo a zvyšují se směrem doleva. Hodnotu binárního čísla pak spočteme jako součet těchto mocnin. Každou mocninu započítáme, pokud je na příslušné pozici 1 nebo nezapočítáme, pokud je na daném místě 0.

Značení soustav

Abychom odlišili, jestli mluvíme o čísle v binární nebo v desítkové soustavě, přidáváme k číslům dolní indexy značící soustavu. Například číslo 5 v desítkové soustavě budeme psát jako 5_{10}, binární číslo s hodnotou 5 napíšeme jako 101_2. Potom můžeme jasně rozlišit, že například zápisem 11_{10} myslíme desítkové číslo 11, zatímco zápis 11_2 budeme interpretovat jako binární číslo 11 a tedy desítkové číslo 3.

Intuitivní pomůcka

Pro základní představu u binárních číslech můžeme použít pomůcku, kterou máme vždy po ruce – totiž ruku samotnou. Představme si, že si na prsty ruky napíšeme mocniny dvojky:

Pak můžeme na prstech jedné ruky počítat nejen do pěti, ale až do třiceti jedné. Každé číslo lze totiž vyjádřit (jednoznačně) jako součet mocnin dvojky. Pokud polohu prstů zaznačíme pomocí nul a jedniček, dostaneme zápis v binární soustavě.

Příklady čísel zapsaných v binární soustavě

desítkově součet mocnin binárně
1 1 1
2 2 10
3 2+1 11
4 4 100
5 4+1 101
6 4+2 110
7 4+2+1 111
8 8 1000
9 8+1 1001
10 8+2 1010
16 16 10000
20 16+4 10100
30 16+8+4+2 11110

Binární čísla: záporná a desetinná

Přejít ke cvičením na toto téma »

V počítači často potřebujeme pracovat se zápornými nebo desetinnými čísly. Protože však počítače používají pouze nuly a jedničky, je potřeba tato čísla nějakým způsobem zapisovat bez použití mínusu nebo desetinné čárky.

Záporná čísla

Existuje více způsobů, jak zapisovat záporná čísla. Obvykle máme daný určitý počet bitů, se kterými můžeme pracovat, často jeden byte.

V přímém kódu první bit zleva slouží pro uchování znaménka čísla. Obsahuje 0, pokud je číslo kladné, a 1, pokud je záporné. Na ostatních 7 bitů se zapíše absolutní hodnota čísla. Číslo 5_{10} se tedy v jednom bytu zakóduje jako 0000 0101 a -5_{10} jako 1000 0101.

V inverzním kódu nejprve zapíšeme absolutní hodnotu čísla. Pokud je číslo kladné, dál neděláme nic. Pokud je záporné, obrátíme hodnotu všech bitů (vyměníme 0 za 1 a naopak). Číslo 5_{10} se tedy v jednom bytu napíše jako 0000 0101 a -5_{10} jako 1111 1010.

Kódování v doplňkovém kódu (dvojkovém doplňku) začíná podobně jako v inverzním. Nejprve napíšeme absolutní hodnotu čísla a pokud je číslo kladné, dál nepokračujeme. Pro záporná čísla provedeme obrácení (inverzi) bitů a následně ještě přičteme jedničku. Číslo 5_{10} tedy v jednom bytu zapíšeme jako 0000 0101 a -5_{10} jako 1111 1010 + 1 = 1111 1011. Pokud chceme získat hodnotu záporného čísla nebo obrátit znaménko zpět do plusu, provedeme ten samý sled operací. Nejprve obrátíme všechny bity a poté přičteme 1. Pro číslo -5_{10} by to vypadalo následovně: inverze bitů: 1111 1011 → 0000 0100, přičtení jedničky: 0000 0100 + 1 = 0000 0101. Získali jsme číslo 5_{10}.

Ve všech třech kódech poznáme záporné číslo podle toho, že má na prvním místě zleva 1. Kladná čísla na této pozici vždy obsahují 0.

Desetinná čísla

Desetinná čísla mohou být velmi dlouhá, občas mají dokonce nekonečný zápis. Počítače však mají omezený prostor v paměti, proto se i desetinná čísla ukládají na omezený počet bitů. Tento způsob reprezentace se nazývá zápis s plovoucí desetinnou čárkou a kvůli zmenšenému prostoru může být občas trochu nepřesný.

V zápisu s plovoucí desetinnou čárkou se číslo ukládá pomocí dvou hodnot: mantisy a exponentu. Ve speciálním bitu se navíc uchovává znaménko čísla, pro kladná se uloží 0 a pro záporná 1.

Mantisa představuje základ čísla – v podstatě jsou to číslice použité v zápisu. Desetinná čárka se v mantise nachází vždy na předem dohodnuté pozici, často například za první číslicí zleva. Čím větší prostor (počet bitů) máme na mantisu, tím přesněji můžeme číslo uložit.

Exponent je počet míst, o které se má desetinná čárka v mantise posunout, abychom dostali původní číslo. Kladný exponent znamená posun směrem doprava, čímž se číslo zvětšuje. Záporný exponent značí posun desetinné čárky doleva, tím se číslo víc přibližuje nule. Čím víc místa máme na exponent, tím větší rozsah hodnot můžeme ukládat.

Například číslo 1101{,}001_2 bude mít mantisu 1{,}101001_2 a exponent 3_{10}. Ve znaménkovém bitu bude 0.

Na obrázku je příklad, jak může být jedno číslo uloženo v paměti počítače na 32 bitech (4 bytech).

Binární čísla: aritmetika

Přejít ke cvičením na toto téma »

Pokud zvládáme základní princip binární soustavy, můžeme se pustit do aritmetických operací.

Sčítání binárních čísel

Binární čísla můžeme sčítat pod sebou velmi podobně, jako jsme zvyklí sčítat čísla v desítkové soustavě. Jediný rozdíl nastává, pokud sčítáme dvě jedničky. Protože 1_2 + 1_2 = 10_2, v takovém případě zapíšeme 0 a přenášíme 1 do vyššího řádu.

Odčítání binárních čísel

Odčítání binárních čísel funguje obdobně. K přenosu dochází pouze při počítání rozdílu 0_2 - 1. V takovém případě si „vypůjčíme“ jedničku z vyššího řádu – jako bychom počítali 10_2 - 1_2. Potom zapíšeme 1 a v dalším řádu navíc odečteme jedničku, kterou jsme si půjčili.

Násobení binárních čísel

Násobení binárních čísel je také téměř stejné jako u desítkových čísel. Násobíme tak, jako kdybychom měli dvě desítková čísla složená pouze z nul a jedniček. Sčítání řádků vzniklých násobením potom probíhá jako binární sčítání, které je popsáno výše.

Pokud máme binární číslo násobit mocninou dvojky, můžeme si práci velmi ulehčit. Stačí pouze přidat na konec čísla tolik nul, kolikátou mocninou dvojky násobíme. Například při násobení dvěma přidáváme 1 nulu (2 = 2^1), při násobení osmi přidáváme 3 nuly (8 = 2^3). Celočíselné dělení mocninou dvojky je také jednoduché, stačí odstranit tolik posledních číslic z dělence, kolikátou mocninou dvojky dělíme.

Hexadecimální čísla jsou čísla zapsaná v šestnáctkové (hexadecimální) soustavě. Tato soustava využívá 16 symbolů (0-9 a A-F, kde A-F představují desítku až patnáctku).

Hexadecimální čísla jsou úzce propojena s binární soustavou. Každý symbol v šestnáctkové soustavě představuje čtyři bity v binární soustavě, což usnadňuje převody mezi těmito soustavami. Každé číslo v hexadecimální soustavě lze převést na binární tím, že každému hexadecimálnímu symbolu přiřadíme čtyři bity.

Příklady převodu čísel

  • Hexadecimální číslo 1A odpovídá binárnímu číslu 00011010, protože 1 = 0001 a A = 10 = 1010. V desítkové soustavě odpovídá 1A číslu 26 (1 \cdot 16 + 10).
  • Desítkové číslo 255 může být vyjádřeno hexadecimálně jako FF, kde F značí patnáctku.

Hexadecimální čísla jsou často využívána v oblasti barevného zobrazení, například v RGB modelu. Každá složka barvy (červená, zelená, modrá) je vyjádřena osmi bity, což odpovídá dvěma hexadecimálním číslicím. Například barva červená s plnou intenzitou by byla zapsána jako #FF0000, kde FF reprezentuje maximální hodnotu červené složky.

NAPIŠTE NÁM

Děkujeme za vaši zprávu, byla úspěšně odeslána.

Napište nám

Nevíte si rady?

Nejprve se prosím podívejte na časté dotazy:

Čeho se zpráva týká?

Vzkaz Obsah Ovládání Přihlášení Licence