
Bitové operace

Bitové operace spojují logiku s binárním zápisem čísel. Provádějí logické úkony přímo nad jednotlivými bity binárních čísel, podle čehož také dostaly svůj název. Na rozdíl od běžné aritmetiky zde neexistuje žádný „přenos do vyššího řádu“ (carry). Každá pozice v čísle se zpracovává izolovaně. Bitové operace se vyznačují také tím, že nepracují jen s jedním bitem, ale s celou posloupností bitů najednou.
Logické operace
Logické operace jsou typickou ukázkou bitových operací. Mezi nejčastěji používané patří bitová negace (NOT), konjunkce neboli součin (AND), disjunkce neboli součet (OR) a neekvivalence (XOR). Více se logickým spojkám věnuje sekce logiky.
Příklady logických operací
Unární bitová operace NOT vezme jeden binární řetězec a kažou hodnotu v něm změní na opačonu; tedy z každé 0 udělá 1 a z každé 1 udělá 0.
- Z řetězce 10100 udělá řetězec 01011.
- Z řetězce 11111 udělá řetězec 00000.
- Z řetězce 00000 udělá řetězec 11111.
Binární bitové operace vezmou dva řetězce stejné délky a zkombinují je do jednoho nového řetězce bit po bitu:
- Operace AND udělá z řetězců 11010 a 01110 řetězec 01010
- Operace AND udělá z řetězců 11110 a 00110 řetězec 00110
- Operace OR udělá z řetězců 10010 a 00011 řetězec 10011
- Operace OR udělá z řetězců 11110 a 00111 řetězec 11111
- Operace XOR udělá z řetězců 10010 a 00011 řetězec 10001
- Operace XOR udělá z řetězců 11110 a 00111 řetězec 11001
Posuny
Dalším častým druhem operací jsou posuny. Posun, neboli shift, se převádí přidáním nuly na začátek, případně na konec, sekvence bitů a odebráním jednoho bitu z druhé strany řetězce. Posun doprava (>>) tedy přidá nulu na začátek a odebere poslední bit, což pro binární čísla odpovídá celočíselnému dělení dvěma. Posun doleva (<<) naopak přidá nulu na konec řetězce a odebere první bit, což pro binární čísla odpovídá násobení dvěma.
Příklady posunů
Posun doprava (>>) o 1 pozici celočíselně dělí dvěma. Posun o 2 pozice dělí čtyřmi, posun o 3 dělí osmi a tak dále.
- Z čísla 10 udělá číslo 5: 1010 >> 1 = 0101
- Z čísla 4 udělá číslo 2: 0100 >> 1 = 0010
- Z čísla 7 udělá číslo 3: 0111 >> 1 = 0011
- Posun o 2 udělá z čísla 10 číslo 2: 1010 >> 2 = 0010
- Posun o 2 udělá z čísla 7 číslo 1: 0111 >> 2 = 0001
- Posun o 3 udělá z čísla 10 číslo 1: 1010 >> 3 = 0001
Posun doleva (<<) o 1 pozici celočíselně násobí dvěma. Posun o 2 pozice násobí čtyřmi, posun o 3 násobí osmi a tak dále.
- Z čísla 5 udělá číslo 10: 0101 << 1 = 1010
- Z čísla 4 udělá číslo 8: 0100 << 1 = 1000
- Z čísla 7 udělá číslo 14: 0111 << 1 = 1110
- Posun o 2 udělá z čísla 1 číslo 4: 0001 << 2 = 0100
- Posun o 2 udělá z čísla 3 číslo 12: 0011 << 2 = 1100
- Posun o 3 udělá z čísla 1 číslo 8: 0001 << 3 = 1000
Využití
Díky izolovanosti provádění operace na každém bitu zvlášť je v počítači často možné provádět více bitových operací paralelně. Následkem toho je práce s bitovými operacemi velmi rychlá, rychlejší než například sčítání nebo odčítání.
Bitové operace je možné používat na libovolné binární řetězce, nejen na čísla. Například do osmi bitů se dá místo osmibitového čísla uložit 8 indikátorů, takzvaných flagů, nesoucích binární informaci (s hodnotami true nebo false). S těmito flagy je pak možné manipulovat zároveň pomocí binárních operací.
Zavřít