Booleova algebra: Rozdiel medzi revíziami

Z Kiwiki
Skočit na navigaci Skočit na vyhledávání
Riadok 10: Riadok 10:
 
==Základné operácie==
 
==Základné operácie==
  
'''Logický súčin (AND)'''
+
===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.
+
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. Pri počítaní Booleových rovníc má logický súčin prednosť pred logickým súčtom.
  
 
{| class="wikitable"
 
{| class="wikitable"
Riadok 30: Riadok 30:
  
  
'''Logický súčet (OR)'''
+
===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.
 
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.
Riadok 50: Riadok 50:
  
  
'''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.
Riadok 66: Riadok 66:
 
==Zložitejšie logické operácie==
 
==Zložitejšie logické operácie==
  
'''Negovaný logický súčin (NAND)'''
+
===Negovaný logický súčin (NAND)===
  
 
Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ∧ B)'''
 
Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ∧ B)'''
Riadok 84: Riadok 84:
  
  
'''Negovaný logický súčet (NOR)'''
+
===Negovaný logický súčet (NOR)===
  
 
Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ∨ B)'''
 
Dá sa vyjadriť pomocou základných logických operácií: '''Y = <math>\neg</math>(A ∨ B)'''
Riadok 102: Riadok 102:
  
  
'''Exkluzívny logický súčet (XOR)'''
+
===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'''
 
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'''
Riadok 120: Riadok 120:
  
  
'''Negovaný exkluzívny logický súčet (XNOR)'''
+
===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)'''
 
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)'''

Verzia zo dňa a času 23:20, 28. 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]

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. Pri počítaní Booleových rovníc má logický súčin prednosť pred logickým súčtom.

A B Y = A ∧ B
0 0 0
0 1 0
1 0 0
1 1 1

Logický súčin


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ý súčet


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

[2]

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 }

Zdroje