Logický operátor IMP
Operátor IMP ako implikácia je najťažšie zapamätateľný (aspoň pre mňa bol) zo všetkých povedaných operátorov. Výraz v IMP je nepravdivý len vtedy, ak prvý výraz je pravdivý a druhý výraz nepravdivý. V ostatných prípadoch je výraz pravdivý. Fajn, poďme sa presvedčiť na príklade.
1. príklad: Chovanie operátora IMP
Sub example Dim retazec As String Dim pole1() Dim pole2() Dim i As Integer pole1() = Array(True, False, True, False) pole2() = Array(True, False, False, True) For i = LBound(pole1()) To UBound(pole1()) retazec = retazec & pole1(i) & " IMP " & pole2(i) & " = " & CBool(pole1(i) IMP pole2(i)) & CHR(10) Next MsgBox retazec End Sub
Výsledná činnosť makra
Rozbor makra: Vidíte, že len jeden prípad dáva IMP nepravdivý a to ak prvý výrok je pravdivý a druhý nepravdivý
Bity, bajty a výroková logika
Ešte predtým, než prejdeme k bitových operátorom, treba si niečo povedať o bitoch, bajtoch a výrokoch.
Určite som niekde spomínal v rámci tohto seriálu spomínal, čo sú to bity a bajty. Zopakujme si termíny. Jeden bit predstavuje nejakú pravdivostnú hodnotu. Hodnota môže mať dve stavy. Pravdivú a nepravdivú.
Ukážka:
0 – 1 bit
01 – 2 bitov
101 – 3 bitov
1011 – 4 bitov
10101 – 5 bitov
111000 – 6 bitov
1110011 – 7 bitov
01010101 – 8 bitov
Ešte poznámka, to či je skupina výrokov 5, 6 alebo 8 bitová, závisí od počtu výrokov v skupine. Výroky, pravdivostné vzťahy a javy s nimi spojené skúma práve výroková logika.
Môj najobľúbenejší príklad a prvá skúsenosť s výrokovou logikou na vysokej škole je bitová (dvojková) sústava čísel od 0 do 15 v 4 bitovom predvedení. Stačia nám 4 bity, aby sme vyjadrili v bitovej formulácii všetky čísla od 0 do 15.
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
0101 = 5
0110 = 6
0111 = 7
1000 = 8
1001 = 9
1010 = 10
1011 = 11
1100 = 12
1101 = 13
1110 = 14
1111 = 15
Zaujímavosťou, ktorú spomeniem je, že vieme si spočítať, koľko tých stavov v nejakej bitovej formulácie môžeme využiť. Napríklad ak máme 4bitovú formuláciu, počet stavov je maximálne 16. Keďže začíname od čísla 0, tak od 0 do 15. Ako sa k číslu 16 môžeme dostať? Vzorcom 2^n, kde číslo 2 znamená dve možné pravdepodobnostné hodnoty (od toho aj názov bitová resp. dvojková sústava) a n ktorá predstavuje rozsah bitov, o ktorej sa celý čas bavíme. Čiže 2^4 = 16.
Určite poznáte ASCII tabuľku a ktorý nevedia o čom je reč, vysvetlím. ASCII tabuľka je tabuľka v ktorej sú znaky a k týmto znakom je priradená bitová reprezentácia znakov. Tejto bitovej formulácie už rozumie váš mozog počítača, procesor. Keď zadáte klávesu k, tak zadané písmeno je definované číslom 107 a toto číslo sa pretaví do 8-bitovej podoby, ktorej rozumie procesor.
ASCII tabuľka je 8-bitová a už podľa známeho vzorca 2^8 = 256 stavov. Číslujeme od nuly, preto rozsah čísel pri 8-bitovej reprezentácii je od 0 do 255. Aby sme zbytočne nevypisovali, ako vyzerá 256 stavov 8 bitovej reprezentácii, vypíšeme len prvých 16 stavov v 8 bitovej reprezentácii.
0000 0000 = 0
0000 0001 = 1
0000 0010 = 2
0000 0011 = 3
0000 0100 = 4
0000 0101 = 5
0000 0110 = 6
0000 0111 = 7
0000 1000 = 8
0000 1001 = 9
0000 1010 = 10
0000 1011 = 11
0000 1100 = 12
0000 1101 = 13
0000 1110 = 14
0000 1111 = 15
A aká reprezentáciu bude mať číslo 16? 17? Väčšina tutoriálov skončí pri čísle 15 a väčšina začiatočníkov sú na pochybách, ako pokračovať. Dám vám ešte tieto dve čísla ako pokračovanie.
0001 0000 = 16
0001 0001 = 17
A takto to pokračuje až k číslu 255. Rovnaké pravidla platia i pri iných bitových reprezentáciách.
Bitové operátory
Poznáme logické operátory, napríklad logický súčin AND a logický súčet OR. Existujú aj takzvané bitové operátory. Napríklad bitový súčin AND a bitový súčet OR. Je medzi nimi rozdiel? Jedine vo forme, funkcionalitou ide o tu istú vec.
Napríklad:
False AND True = False operátor AND je
logický
0 AND 1 = 0 operátor AND je bitový
Takže vidíte, rozdiel je len vo forme.
Ešte posledná drobnosť pred koncom. Ak máme viacero bitovú reprezentáciu, napríklad:
0011 AND 1101 = 0001
Sled porovnávania je prvý s prvým, druhý s druhým, tretí s tretím a atď…
Tento článok bol ako vidíte, viacmenej teoretický. Dúfam, že nováčikom pomohol sa troška zorientovať, o čo ide a uviedli sme si i jeden praktický príklad, ASCII tabuľku, kde sa takéto veci používajú. Nabudúce bude posledná praktickejšia časť z cyklu Operátory a potom pôjdeme ďalej. Čaká nás ešte dosť práce, tak ostaňte naladený.