Bitové operátory a Pravdivostní tabulky
 
Stránka se bude do budoucna upravovat. Pokud ale již teď není něco jasné, potřebovali by jste doplnit údaje atp., napište na FÓRUM a něco s tím uděláme. Také můžete pomoci. Za prvé potřebuji doplnit vysvětlení operátorů a věřte, že jde o výsostně důležitou součást programování, za druhé bych uvítal pomoc animátora. El. schémata moc znalostí práce s grafikou nevyžadují a vy můžete získat, jako odměnu, aktivní link (zpětný odkaz) na svou stránku - ze stránek Helltrackeru, který je v Gůglu hodnocen kvalitativně stupněm 6 (ano, je to gůgl rank, který je pro většinu lidí tajný).



Výpočetní hodnoty pro Bitové logické operátory.
Používají se tyto pojmy:
    • operátor - Příkaz, který pracuje s operandy.
    • operand - hodnota, kterou chceme zpracovat či porovnat pomocí operátoru. Operand je obvykle výraz.
    • výraz - Př: IF A=1 THEN ... - výraz je formulace A=1. Výraz a operand bývají totéž ;-) IF..THEN jsou příkazy.
    • lhs - Levý operand (z en. Left-Hand Side)
    • rhs - Pravý operand (z en. Right-Hand Side)

Binární operátory
Operátory, které používají dva operandy.
Unární operátory
Operátory, které používají jeden operand.

Tyto logické operátory vrací hodnotu závislou na hodnotě svých operandu/ů. U těchto binárních operátorů se lhs bit aplikuje logicky na korespondenční rhs bit. Logická operace pak vrátí výsledek.
Pro unární operátor (Not) je logická operace aplikována na jeho jediný, lhs operand.

Binární operátory

Operátor AND - A zároveň (Konjunkce)
lhsrhsVýsledek AND
000
010
100
111
Operátor hodnotí stavy obou operandů, a pokud zjistí, že jsou oba výrazy pravdivé (tedy hodnota 1), je výsledkem operace hodnota 1 (pravda), jako že vše platí, všechno je pravda, vše je OK. Pokud je ovšem hodnota některého nebo obou výrazů 0 (nepravda), je výsledkem 0 (nepravda). Aneb: "Poloviční lež je pořád lež!".
V matematice se jedná o logický součin. Cokoliv vynásobíme nulou = nula.

Na elektrickém schématu (na obrázku) je znázorněno, jak operátor AND funguje. Jako když zapojíte žárovku přes dva vypínače - sériově. Žárovka pak svítí, jen když jsou sepnuty oba vypínače. Sepnutý vypínač je 1 (správně, pravda, true) a okruh je propojen, vypnutý vypínač je 0 (špatně, nepravda, false) a okruh je rozpojen. Vidíme tedy, že můžou vzniknout 4 kombinace sepnutí/vypnutí vypínačů, přičemž jen v jediném případě se žárovka rozsvítí.

Operátor EQV - Shoda (z angl. Equivalence)
lhsrhsVýsledek EQV
001
010
100
111
Bity ve Výsledku se nastaví na '1' tehdy, jsou-li hodnoty operandů shodné. Tedy jsou-li obě hodnoty buď '0', a nebo '1'. Rovná-li se lhs bit rhs bitu (jsou ekvivalentní), je výsledkem '1'.

Operátor IMP (Implikace)
lhsrhsVýsledek IMP
001
011
100
111
Vrací vždy hodnotu 1, s výjimkou stavu, kdy levý operand je 1 a pravý je 0. (? dovysvětlit - V orig. je: Když je lhs bit implikován rhs bitem...).

Operátor OR - Nebo (Inkluzivní Disjunkce)
lhsrhsVýsledek OR
000
011
101
111
Tohle zní také děsivě, ale není tomu tak.
OR, přeloženo do češtiny, znamená NEBO. Tedy je-li jeden, NEBO druhý bit (operand) '1', je i výsledek '1'. Jsou-li oba bity '1', pak je také výsledek '1', neboť platí, že nejméně jeden z bitů je '1' (pravda). Výsledek '0' dostaneme jen v situaci, kdy ani jeden operand není '1'.
Matematicky jde o logický součet - nevýhradní. Lidsky: Sečti lhs + rhs = jestli je součet větší než '0', výsledkem je '1' (pravda, true). V tomto se liší od operátoru XOR, označovaného jako výhradní.

Použiji-li schéma elektrického zapojení, které se chová stejně jako operátor OR, bude vypadat, jako obrázek vlevo. Opět máme zdroj proudu, žárovku a dráty. Oproti AND, kde jsou vypínače zapojeny do série, el. obvod pro OR má vypínače zapojeny paralelně. Stačí jeden sepnutý vypínač '1' a žárovka svítí, tzn. výsledkem je stav '1' (podmínka platí, true, pravda). Stačí jeden vypínač sepnutý, ale mohou být sepnuty i oba, což je odchylka od XOR.

Operátor XOR - Jen jeden (Exclusivní Disjunkce)
lhsrhsVýsledek XOR
000
011
101
110
Rozdíl oproti OR je v tom, že tento operátor vrací '1' tehdy, když je právě jeden operand '1', nikoliv alespoň jeden. Jsou-li pravdivé oba porovnávané výrazy, je výsledkem '0'. Matematicky pak jde o logický součet - výhradní. Pokod sečtením operandů získáme právě a jen výsledek '1' (výhradně '1'), podmínka platí. V ostatních případech je výsledkem nepravda ('0', false).


Opět se dá pro srovnání funkčnosti použít elektro zapojení. Tentokrát je to princip schodišťového přepínače. Světlo svítí jen tehdy, když je zapnut jeden, nebo druhý přepínač (nikoliv vypínač). Zapojení "schodišťáku" ovšem neumožňuje stav, kdy jsou oba přepínače zapnuty, takže srovnání trochu kulhá. (?časem to přepíšu)
Unární operátory

Operátor NOT - Negace (Complement)
OperandVýsledek NOT
01
10
Bit ve Výsledku je vždy pravým opakem operandu. Není v tom nic víc, ani méně. Někdy (resp. docela často) potřebujeme hodnotit přesně opačně výsledek, než jak nám vyplývá z průběhu programu. Například podmínku v programu můžeme formulovat jako: "Když je dostatek dat, jdi je zpracovat.". Totéž se dá obrátit a někdy využijeme spíše tuto formulaci: "Když NEchybí data, jdi je zpracovat.". Zde máme právě tu podmínku NOT. Vlastně tvoříme programovou rutinu, která sbírá data a sbírá a ... až jich je přehršle - teď se teprve budou zpracovávat... A tohle všichni známe z playeru na Yůtůbu, kde se načítá "dokud data chybí". Jakmile NEchybí (NOT), jde se zobrazovat.


Napadá mne opět příměr pomocí el. zapojení žárovky s vypínači. Tentokrát jde o zapojení "do zkratu". To obrací funkčnost elektrického obvodu. Zapnutím vypínače způsobíme zkrat a žárovka zhasne. Vypnutím vypínače zrušíme zkratový stav a žárovka se rozsvítí. Zapnutý vypínač reprezentuje stav '1' a žárovka (díky zkratu) je ve stavu '0' - nesvítí. Výsledek: Obrátili jsme hodnotu operandu.


 

Překlad: Gmisiycs 7.2.2016
Aktualizace: Gmisiycs 23.10.2016