Obsah    Kapitoly: 12345678,  |  X.1X.2X.3X.4,  |  Y1 Y2 

X.2) Bity v bytu

Abychom se přiblížili trochu k řeči programátorů, ukážeme si, jak vlastně vypadá byte, pomocí bitů. Nakreslíme si menší obrázek s osmi "chlívečky", pro každý bit jeden. (Neboť bajt se skládá z 8 bitů) Takto zapsaný bajt má hodnotu 0.
Bit
 7   6   5   4   3   2   1   0 
Stav
 0   0   0   0   0   0   0   0 

Kdežto tento bajt má hodnotu 1.
Bit
 7   6   5   4   3   2   1   0 
Stav
 0   0   0   0   0   0   0   1 

A tento bajt má zase hodnotu 2.
Bit
 7   6   5   4   3   2   1   0 
Stav
 0   0   0   0   0   0   1   0 
V každém bajtu je to uděláno tak, že každý bit má určitou hodnotu, kterou k bajtu přidá, je-li nastaven na logickou 1, nebo nepřidá, je-li nastaven na logickou 0. (Pokud by to některým z vás pomohlo, tak zápis dole, pomocí 0 a 1 je vlastně zápis čísla ve dvojkové soustavě. Doporučuji se podívat na kapitolu "
Převody mezi soustavami".)

Zde vidíte číslo bitu (první řádek), jeho hodnotu znázorněnou jako mocninu dvou (druhý řádek) a hodnotu v desítkové soustavě (třetí řádek).
Bit
  7   6   5   4   3   2   1   0 
Mocnina
  27  26  25  24   23  22  21  20 
Hodnota
 128  64  32  16   8   4   2  1 

Chceme-li tedy zapsat číslo 111, musíme si jej napřed sestavit z mocnin dvou. To jsou následující čísla: 1, 2, 4, 8, 16, 32, 64, 128… Mohli bychom ještě pokračovat, ale zatím nám to stačí do 128.
Zpět k číslu 111. Jak pomocí součtu čísel 1, 2, 4, 8, 16, 32, 64, 128 dostaneme 111? Co třeba takto:

111 = 64+32+8+4+2+1

kde 64 je 26 32 je 25 8 je 23 4 je 22 2 je 21 a 1 je 20

Musím vás ubezpečit, že jiná možnost ani není. Zatím bychom to zvládli. Zkusme jen drobnou změnu, a to že k "chlívečkům", které mají hodnoty 1, 2, 4, 8, 16, 32, 64, 128 přiřadíme hodnotu 0 nebo 1, podle toho, zdali to číslo chceme, či nechceme. V případě 111 nechceme číslo 128 a 16, proto k nim přiřadíme logickou 0.
Hodnota
 128  64  32  16   8   4   2  1 
Mocnina
  27   26  25  24  23  22  21  20 
Stav
  0   1   1   0   1   1   1   1 

Pokud chceme zase z "chlívečků" získat číslo budeme postupovat takto: Těch bitů, které mají přiřazenou logickou 0 si všímat nebudeme. Zato se pekelně soustředíme na bity s 1. Podle toho, na kolikátém místě je máme zapsány, tolikátou mocninou 2 jsou. Takže bit na sedmé pozici (číslujeme trošku nelogicky zprava) je 27 tedy 128, bit na 6 pozici je 26, tedy 64 atd. Tak a teď sečte všechny bity, které mají logickou 1. V našem případě: 64+32+8+4+2+1=111. Vím, že vám, co něco podobného vidíte poprvé to není zrovna jasné, ale chce to jen trochu cviku. Vyzkoušejte si následující příklady, nebo si přidejte i své vlastní.

Stačí když si dopočítáte číslo z "chlívečků" a doplníte 0 a 1.
Bit
 7   6   5   4   3   2   1   0 
Stav
 1   1   1   1   1   1   1   1 


Bit
 7   6   5   4   3   2   1   0 
Stav
 1   0   0   1   0   0   0   1 


A zkuste doplnit na 113:
Bit
 7   6   5   4   3   2   1   0 
Stav
                               

A na 264:
Bit
 7   6   5   4   3   2   1   0 
Stav
                               
Výsledky jen pro kontrolu: 255; 145; 0,1,1,1,0,0,0,1; nelze neboť je větší 255.

A teď ještě jeden úkol. Vzpomínáte si na začátek první kapitoly o bajtech a na rozsvícené písmenko "A" na osmipatrovém domě? Vypadalo asi takto:

1

2

3

4

5

6

7

8

Je to vlastně takových osm bajtů po osmi bitech pod sebou. Rozsvícené okno považujte za 1 a zhasnuté za 0. Jakou hodnotu má bajt v 7.patře? Pro názornost toto patro:

1

2

3

4

5

6

7

8


Pokud tvrdíte, že 60, máte pravdu. Je to:

22 + 23 +24 +25 = 4+8+16+32 = 60.


A co se stane, když k tomuto bajtu přiřadíme hodnotu 0? Všechny bity budou mít hodnotu logické 0 a tím pádem, budou okna zhasnutá. Takže na domě nebude svítit "A", ale jakési menší "H".

X.2.1) Nižší a vyšší byte

Když budete nadále zkoušet programovat v Assembleru, setkáte se zcela určitě z 16-bitovými čísly, které se nazývají registry (Jsou to čísla, na která je přímo v procesoru vyhrazena malá, ale velmi rychlá paměť, takže přístup k nim je prakticky okamžitý. Pozn.: ve skutečnosti jsou ale více bitová o tom však později). Protože jsou 16-bitová, skládají se vlastně ze dvou bajtů. Takové to bajty se nazývají vyšší a nižší bajt. A vypadá to asi takto:
 

Vyšší bajt

Nižší bajt

Bit
 7   6   5   4   3   2   1   0  
 7   6   5   4   3   2   1   0  
Stav
 1   1   1   1   1   1   1   1  
 1   1   1   1   1   1   1   1  

Jen kontrolní otázka: Jakou velikost má číslo napsané v tabulce? Pokud si myslíte, že 65 535, tedy 216-1 máte absolutně pravdu. Stejně jako 8-bitový bajt má největší hodnotu 28-1=255, tak 16-bitové číslo má 216-1. Jednička se odčítá jen kvůli tomu, že hodnoty bajtu nepočítáme od 1, jak jsme zvyklí, nýbrž od 0.

Předchozí kapitola Nahoru Následující kapitola