Booleova algebra: Rozdiel medzi revíziami
Riadok 12: | Riadok 12: | ||
'''Logický súčin (AND)''' | '''Logický súčin (AND)''' | ||
− | Odborne nazývaný '''logická konjukcia'''. Označuje sa symbolom ∧ (v jazyku c/c++ je označená symbolom && pri podmienkach a symbolom & pri bitovom súčte), alebo sa používa pojem "a súčasne". Jeho výsledná hodnota Y je log. 1, ak oba vstupy A aj B sú log. 1, inak je výsledkom log. 0. | + | Odborne nazývaný '''logická konjukcia'''. Označuje sa symbolom ∧ alebo . ,prípadne * (v jazyku c/c++ je označená symbolom && pri podmienkach a symbolom & pri bitovom súčte), alebo sa používa pojem "a súčasne". Jeho výsledná hodnota Y je log. 1, ak oba vstupy A aj B sú log. 1, inak je výsledkom log. 0. |
{| class="wikitable" | {| class="wikitable" | ||
Riadok 32: | Riadok 32: | ||
'''Logický súčet (OR)''' | '''Logický súčet (OR)''' | ||
− | Odborne nazývaný '''logická disjunkcia'''. Označuje sa symbolom ∨(v jazyku c/c++ je označená symbolom || pri podmienkach a symbolom | pri bitovom súčine), alebo sa používa pojem "alebo". Jeho výsledná hodnota Y je log. 1, ak aspoň jeden vstup A alebo B sú log. 1, inak je výsledkom log. 0. | + | Odborne nazývaný '''logická disjunkcia'''. Označuje sa symbolom ∨ alebo + (v jazyku c/c++ je označená symbolom || pri podmienkach a symbolom | pri bitovom súčine), alebo sa používa pojem "alebo". Jeho výsledná hodnota Y je log. 1, ak aspoň jeden vstup A alebo B sú log. 1, inak je výsledkom log. 0. |
{| class="wikitable" | {| class="wikitable" | ||
Riadok 52: | Riadok 52: | ||
'''Logická negácia (NOT)''' | '''Logická negácia (NOT)''' | ||
− | Označuje sa symbolom <math>\neg</math> alebo apostrofom '(v jazyku c/c++ je označená symbolom ! pri podmienkach a symbolom ~ pri bitovej negácii).. Jeho výsledná hodnota Y je log. 1, ak vstup A je log.0, inak je výsledkom log. 1. | + | Označuje sa symbolom <math>\neg</math> alebo apostrofom ' (v jazyku c/c++ je označená symbolom ! pri podmienkach a symbolom ~ pri bitovej negácii).. Jeho výsledná hodnota Y je log. 1, ak vstup A je log.0, inak je výsledkom log. 1. |
{| class="wikitable" | {| class="wikitable" | ||
Riadok 62: | Riadok 62: | ||
| 1 || 0 | | 1 || 0 | ||
|} | |} | ||
+ | |||
+ | |||
+ | ==Zložitejšie logické operácie== | ||
+ | |||
+ | '''Negovaný logický súčin (NAND)''' | ||
+ | |||
+ | Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ∧ B)''' | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! A !! B !! Y = <math>\neg</math>(A ∧ B) | ||
+ | |- | ||
+ | | 0 || 0 || 1 | ||
+ | |- | ||
+ | | 0 || 1 || 1 | ||
+ | |- | ||
+ | | 1 || 0 || 1 | ||
+ | |- | ||
+ | | 1 || 1 || 0 | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Negovaný logický súčet (NOR)''' | ||
+ | |||
+ | Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ∨ B)''' | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! A !! B !! Y = <math>\neg</math>(A ∨ B) | ||
+ | |- | ||
+ | | 0 || 0 || 1 | ||
+ | |- | ||
+ | | 0 || 1 || 0 | ||
+ | |- | ||
+ | | 1 || 0 || 0 | ||
+ | |- | ||
+ | | 1 || 1 || 0 | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Exkluzívny logický súčet (XOR)''' | ||
+ | |||
+ | Odborne nazývaný '''exkluzívna disjunkcia'''. Označuje sa symbolom ⊕ (v jazyku c/c++ je označená symbolom != pri podmienkach a symbolom ^ pri bitovom súčine), alebo sa používa pojem "nerovná sa". Jeho výsledná hodnota Y je log. 1, ak sa vstup A nerovná vstupu B, inak je výsledkom log. 0. Dá sa vyjadriť pomocou základných logických operácií: '''A ⊕ B = A ∧ <math>\neg</math>B ∨ <math>\neg</math>A ∧ B''' | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! A !! B !! Y = A ⊕ B | ||
+ | |- | ||
+ | | 0 || 0 || 0 | ||
+ | |- | ||
+ | | 0 || 1 || 1 | ||
+ | |- | ||
+ | | 1 || 0 || 1 | ||
+ | |- | ||
+ | | 1 || 1 || 0 | ||
+ | |} | ||
+ | |||
+ | |||
+ | '''Negovaný exkluzívny logický súčet (XNOR)''' | ||
+ | |||
+ | V jazyku c/c++ sa používa označenie == v podmienkach, alebo sa používa pojem "rovná sa". Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ⊕ B)''' | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! A !! B !! Y = <math>\neg</math>(A ⊕ B) | ||
+ | |- | ||
+ | | 0 || 0 || 1 | ||
+ | |- | ||
+ | | 0 || 1 || 0 | ||
+ | |- | ||
+ | | 1 || 0 || 0 | ||
+ | |- | ||
+ | | 1 || 1 || 1 | ||
+ | |} | ||
+ | |||
+ | |||
+ | ==Zákony Booleovej algebry== | ||
+ | |||
+ | Pre zjednodušenie práce s rovnicami v Booleovej algebre je možné používať tieto zákony: | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! !! Zákon súčtu !! Zákon súčinu | ||
+ | |- | ||
+ | | Zákon idempotencie || A ∨ A = A || A ∧ A = A | ||
+ | |- | ||
+ | | Zákon absorpcie || A ∨ A ∧ B = A || A ∧ (A ∨ B) = A | ||
+ | |- | ||
+ | | Zákon absorpcie negácie || A ∨ (<math>\neg</math>A ∧ B) = A ∨ B || A ∧ (<math>\neg</math>A ∨ B) = A ∧ B | ||
+ | |- | ||
+ | | Komutačný zákon || A ∨ B = B ∨ A || A ∧ B = B ∧ A | ||
+ | |- | ||
+ | | Asociatívny zákon || A ∨ (B ∨ C) = (A ∨ B) ∨ C || A ∧ (B ∧ C) = (A ∧ B) ∧ C | ||
+ | |- | ||
+ | | Distributívny zákon || A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C) || A ∧ (B ∨ C) = A ∧ B ∨ A ∧ C | ||
+ | |- | ||
+ | | Neutrálnosť nuly a jednotky || A ∨ 0 = A || A ∧ 1 = A | ||
+ | |- | ||
+ | | Agresívnosť nuly a jednotky || A ∨ 1 = 1 || A ∧ 0 = 0 | ||
+ | |- | ||
+ | | Zákon vylúčeného tretieho || A ∨ <math>\neg</math>A = 1 || A ∧ <math>\neg</math>A = 0 | ||
+ | |- | ||
+ | | Zákon negácie || <math>\neg</math>0 = 1 || <math>\neg</math>1 = 0 | ||
+ | |- | ||
+ | | Zákon dvojitej negácie || <math>\neg</math><math>\neg</math>A = A || | ||
+ | |- | ||
+ | | De Morganove zákony || <math>\neg</math>(A ∨ B) = <math>\neg</math>A ∧ <math>\neg</math>B || <math>\neg</math>(A ∧ B) = <math>\neg</math>A ∨ <math>\neg</math>B | ||
+ | |}<ref>http://www.et-pocitacovesystemy.wz.cz/cislicova_technika/logfce/bool_algebra/booleova_algebra.html</ref> | ||
==Príklad v jazyku C== | ==Príklad v jazyku C== | ||
+ | |||
+ | Tento príklad zobrazuje, ako používať Booleovu algebru v jazyku C. Vstupy Booleovej algebry sú výrazy (A > B), (B > 2). Na začiatku programu je potrebné zadať dve čísla A a B, ktoré sa porovnávajú v daných výrazoch. | ||
<source lang="c" line> | <source lang="c" line> |
Verzia zo dňa a času 23:53, 25. február 2020
Slúži na matematický opis zákonov a pravidiel výrokovej logiky, ktorá rieši vzťahy medzi pravdivými a nepravdivými výrokmi. Pravdivému výroku prideľujeme logickú hodnotu 1 a nepravidelnému výroku logickú hodnotu 0. Nositeľom elementárnej informácie o pravdivosti alebo nepravdivosti výroku je logická premenná, ktorá môže nadobúda dve hodnoty 0 a 1.[1]
Učebné texty
Základné operácie
Logický súčin (AND)
Odborne nazývaný logická konjukcia. Označuje sa symbolom ∧ alebo . ,prípadne * (v jazyku c/c++ je označená symbolom && pri podmienkach a symbolom & pri bitovom súčte), alebo sa používa pojem "a súčasne". Jeho výsledná hodnota Y je log. 1, ak oba vstupy A aj B sú log. 1, inak je výsledkom log. 0.
A | B | Y = A ∧ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Logický súčet (OR)
Odborne nazývaný logická disjunkcia. Označuje sa symbolom ∨ alebo + (v jazyku c/c++ je označená symbolom || pri podmienkach a symbolom | pri bitovom súčine), alebo sa používa pojem "alebo". Jeho výsledná hodnota Y je log. 1, ak aspoň jeden vstup A alebo B sú log. 1, inak je výsledkom log. 0.
A | B | Y = A ∨ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Logická negácia (NOT)
Označuje sa symbolom [math]\neg[/math] alebo apostrofom ' (v jazyku c/c++ je označená symbolom ! pri podmienkach a symbolom ~ pri bitovej negácii).. Jeho výsledná hodnota Y je log. 1, ak vstup A je log.0, inak je výsledkom log. 1.
A | Y = [math]\neg[/math]A |
---|---|
0 | 1 |
1 | 0 |
Zložitejšie logické operácie
Negovaný logický súčin (NAND)
Dá sa vyjadriť pomocou základných logických operácií: Y = [math]\neg[/math](A ∧ B)
A | B | Y = [math]\neg[/math](A ∧ B) |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Negovaný logický súčet (NOR)
Dá sa vyjadriť pomocou základných logických operácií: Y = [math]\neg[/math](A ∨ B)
A | B | Y = [math]\neg[/math](A ∨ B) |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
Exkluzívny logický súčet (XOR)
Odborne nazývaný exkluzívna disjunkcia. Označuje sa symbolom ⊕ (v jazyku c/c++ je označená symbolom != pri podmienkach a symbolom ^ pri bitovom súčine), alebo sa používa pojem "nerovná sa". Jeho výsledná hodnota Y je log. 1, ak sa vstup A nerovná vstupu B, inak je výsledkom log. 0. Dá sa vyjadriť pomocou základných logických operácií: A ⊕ B = A ∧ [math]\neg[/math]B ∨ [math]\neg[/math]A ∧ B
A | B | Y = A ⊕ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Negovaný exkluzívny logický súčet (XNOR)
V jazyku c/c++ sa používa označenie == v podmienkach, alebo sa používa pojem "rovná sa". Dá sa vyjadriť pomocou základných logických operácií: Y = [math]\neg[/math](A ⊕ B)
A | B | Y = [math]\neg[/math](A ⊕ B) |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Zákony Booleovej algebry
Pre zjednodušenie práce s rovnicami v Booleovej algebre je možné používať tieto zákony:
Zákon súčtu | Zákon súčinu | |
---|---|---|
Zákon idempotencie | A ∨ A = A | A ∧ A = A |
Zákon absorpcie | A ∨ A ∧ B = A | A ∧ (A ∨ B) = A |
Zákon absorpcie negácie | A ∨ ([math]\neg[/math]A ∧ B) = A ∨ B | A ∧ ([math]\neg[/math]A ∨ B) = A ∧ B |
Komutačný zákon | A ∨ B = B ∨ A | A ∧ B = B ∧ A |
Asociatívny zákon | A ∨ (B ∨ C) = (A ∨ B) ∨ C | A ∧ (B ∧ C) = (A ∧ B) ∧ C |
Distributívny zákon | A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C) | A ∧ (B ∨ C) = A ∧ B ∨ A ∧ C |
Neutrálnosť nuly a jednotky | A ∨ 0 = A | A ∧ 1 = A |
Agresívnosť nuly a jednotky | A ∨ 1 = 1 | A ∧ 0 = 0 |
Zákon vylúčeného tretieho | A ∨ [math]\neg[/math]A = 1 | A ∧ [math]\neg[/math]A = 0 |
Zákon negácie | [math]\neg[/math]0 = 1 | [math]\neg[/math]1 = 0 |
Zákon dvojitej negácie | [math]\neg[/math][math]\neg[/math]A = A | |
De Morganove zákony | [math]\neg[/math](A ∨ B) = [math]\neg[/math]A ∧ [math]\neg[/math]B | [math]\neg[/math](A ∧ B) = [math]\neg[/math]A ∨ [math]\neg[/math]B |
Príklad v jazyku C
Tento príklad zobrazuje, ako používať Booleovu algebru v jazyku C. Vstupy Booleovej algebry sú výrazy (A > B), (B > 2). Na začiatku programu je potrebné zadať dve čísla A a B, ktoré sa porovnávajú v daných výrazoch.
1 #include<stdio.h>
2 int main(void)
3 {
4 int A = 0;
5 int B = 0;
6 printf("Zadaj cisla pre porovnanie: ");
7 scanf("%d %d", &A, &B); //načítanie dvoch čísiel
8
9 //ak A > B a súčasne B > 2
10 if ((A > B) && (B > 2)) printf("(A > B) && (B > 2) je pravda\n");
11 else printf("(A > B) && (B > 2) je nepravda\n");
12
13 //ak A > B alebo B > 2
14 if ((A > B) || (B > 2)) printf("(A > B) || (B > 2) je pravda\n");
15 else printf("(A > B) || (B > 2) je nepravda\n");
16
17 //ak (A > B) negované
18 if (!(A > B)) printf("!(A > B) je pravda\n");
19 else printf("!(A > B) je nepravda\n");
20
21 return 0;
22 }