Informatyka 1 - PB Wydział Elektryczny
Transkrypt
Informatyka 1 - PB Wydział Elektryczny
Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 5 (23.03.2011) dr inż. Jarosław Forenc Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Plan wykładu nr 5 Standard IEEE 754 liczby 64-bitowe wartości specjalne, operacje z wartościami specjalnymi standard IEEE 754 w języku C Algebra Boole’a operacje w Algebrze Boole’a prawa i aksjomaty Algebry Boole’a wyrażenia i funkcje boolowskie 2/43 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 3/43 Standard IEEE 754 - liczby 6464-bitowe Liczba podwójnej precyzji przechowywana jest na 64 bitach: Pierwszy bit w zapisie (bit nr 63) jest bitem znaku (0 - liczba dodatnia, 1 - liczba ujemna) Wykładnik zapisywany jest na 11 bitach (bity nr 62-52) z nadmiarem (przesunięciem wykładnika) o wartości 1024 Wykładnik może przyjmować wartości od -1023 (wszystkie bity wyzerowane) do 1024 (wszystkie bity ustawione na 1) Mantysa zapisywana jest na 52 bitach w kodzie U1 (pierwszy bit mantysy, zawsze równy 1, nie jest zapamiętywany) Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Standard IEEE 754 - kalkulator IEEE-754 Calculators - http://babbage.cs.qc.edu/IEEE-754/ 4/43 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Standard IEEE 754 - kalkulator IEEE-754 Calculators - http://babbage.cs.qc.edu/IEEE-754/ 5/43 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 6/43 Standard IEEE 754 - zakres liczb Pojedyncza precyzja: największa wartość: ≈ 3,4 ⋅ 1038 najmniejsza wartość: ≈ 1,4 ⋅ 10-45 zakres liczb: <-3,4⋅1038 ... -1,4⋅10-45> ∪ {0} ∪ <1,4⋅10-45 ... 3,4⋅1038> Podwójna precyzja: największa wartość: ≈ 1,8 ⋅ 10308 najmniejsza wartość: ≈ 4,9 ⋅ 10-324 zakres liczb: <-1,8⋅10308 ... -4,9⋅10-324> ∪ {0} ∪ <4,9⋅10-324 ... 1,8⋅10308> Podwójna rozszerzona precyzja: największa wartość: ≈ 1,2 ⋅ 104932 najmniejsza wartość: ≈ 3,6 ⋅ 10-4951 zakres liczb: <-1,2⋅104932 ... -3,6⋅10-4951> ∪ {0} ∪ <3,6⋅10-4951 ... 1,2⋅104932> Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 7/43 Standard IEEE 754 - wartości specjalne Oprócz zwykłych liczb w standardzie IEEE 754 zdefiniowano kilka wartości specjalnych: zero nieskończoność liczba zdenormalizowana nieliczby Kodowanie wartości specjalnych jest możliwe dzięki zastosowaniu przesunięcia wykładnika - wartości graniczne (np. 00h i FFh) są zarezerwowane do kodowania wartości specjalnych Zapis z przesunięciem wykładnika jest monotoniczny (czego nie ma w kodach Z-M i U2), np. NKB z przesunięciem: -1 7Eh 0 7Fh +1 80h Z-M: -1 81h 0 00h/80h +1 01h U2: -1 FFh 0 00h +1 01h Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 8/43 Standard IEEE 754 - wartości specjalne Zero bit znaku może przyjmować dowolną wartość, a zatem można otrzymać zero dodatnie lub zero ujemne 0 0 0 0 znak wykładnik 1 0 0 0 znak ... 0 ... 0 wykładnik 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 - zero dodatnie mantysa 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 - zero ujemne mantysa wszystkie bity wykładnika i mantysy są równe zeru przy porównaniach zero dodatnie i ujemne są traktowane jako równe sobie Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 9/43 Standard IEEE 754 - wartości specjalne Nieskończoność bit znaku określa czy mamy nieskończoność dodatnią czy ujemną 0 1 1 1 znak wykładnik 1 1 1 1 znak ... 1 ... 1 wykładnik 1 1 0 0 0 0 0 0 ... 0 0 0 0 0 0 - nieskończoność dodatnia mantysa 1 1 0 0 0 0 0 0 ... 0 0 0 0 0 0 - nieskończoność ujemna mantysa wszystkie bity wykładnika są równe jeden, zaś wszystkie bity mantysy - zero nieskończoność występuje w przypadku wystąpienia nadmiaru (przepełnienia) oraz przy dzieleniu przez zero Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 10/43 Standard IEEE 754 - wartości specjalne Liczba zdenormalizowana 0 0 0 0 znak wykładnik 1 0 0 0 znak ... 0 ... 0 wykładnik 0 0 x x x x x x ... x x x x x x mantysa 0 0 x x x x x x ... x x x x x x mantysa bit znaku może być równy zero lub jeden, wszystkie bity wykładnika są równe zeru, zaś bity mantysy przyjmują dowolne wartości pojawia się, gdy występuje niedomiar (ang. underflow), ale wynik operacji można jeszcze zapisać denormalizując mantysę w takim przypadku mantysa nie posiada domyślnej części całkowitej równej 1, tzn. reprezentuje liczbę o postaci 0,xxx…xxx, a nie 1,xxx…xxx Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 11/43 Standard IEEE 754 - wartości specjalne Nieliczby w standardzie IEEE 754 zdefiniowane są dwie specjalne wartości, które nie reprezentują wartości liczbowej wartości te nazywane są NaN (ang. Not A Number - nie liczba) powstają zazwyczaj w wyniku niedozwolonej operacji, np. (obliczanie pierwiastka z liczby ujemnej, dzielenie zera przez zero) wyróżnia się dwa rodzaje nieliczb: QNaN i SNaN QNaN (ang. Quiet NaN) - ciche nieliczby x 1 1 1 znak ... 1 wykładnik 1 1 1 x x x x x ... x x x x x x mantysa ciche nieliczby „przechodzą” przez działania arytmetyczne, ich wystąpienie nie powoduje przerwania wykonywania programu) najczęściej oznaczają wartość niezdefiniowaną Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 12/43 Standard IEEE 754 - wartości specjalne Nieliczby (cd.) SNaN (ang. Signaling NaN) - sygnalizujące, istotne, głośne nieliczby x 1 1 1 znak ... 1 wykładnik 1 1 0 x x x x x ... x x x x x x mantysa powodują powstanie wyjątków w operacjach arytmetycznych i przerwanie obliczeń najczęściej oznaczają wartość niedozwoloną Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 13/43 Standard IEEE 754 - wartości specjalne Standard IEEE 754 definiuje dokładnie wyniki operacji, w których występują specjalne argumenty Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 14/43 Język C - operacje z wartościami specjalnymi 1.0/0.0 -1.0/0.0 0.0/0.0 sqrt(-1.0) 1.0/INF 0*INF #include <stdio.h> #include <math.h> int main() { printf("1.0/0.0 printf("-1.0/0.0 printf("0.0/0.0 printf("sqrt(-1.0) printf("1.0/INF printf("0*INF = = = = = = %f\n",1.0/0.0); %f\n",-1.0/0.0); %f\n",0.0/0.0); %f\n",sqrt(-1.0)); %f\n",1.0/(1.0/0.0)); %f\n",0.0*(1.0/0.0)); return 0; } Środowisko: Dev-C++ Kompilator: gcc = = = = = = 1.#INF00 -1.#INF00 -1.#IND00 -1.#IND00 0.000000 -1.#IND00 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 15/43 Język C - operacje z wartościami specjalnymi 1.0/0.0 -1.0/0.0 0.0/0.0 sqrt(-1.0) 1.0/INF 0*INF #include <stdio.h> #include <math.h> int main() { float x = 0.0; printf("1.0/0.0 printf("-1.0/0.0 printf("0.0/0.0 printf("sqrt(-1.0) printf("1.0/INF printf("0*INF = = = = = = %f\n",1.0/x); %f\n",-1.0/x); %f\n",0.0/x); %f\n",sqrt(-1.0)); %f\n",1.0/(1.0/x)); %f\n",0.0*(1.0/x)); return 0; } Środowisko: Microsoft Visual C++ 2008 Express Edition = = = = = = 1.#INF00 -1.#INF00 -1.#IND00 -1.#IND00 0.000000 -1.#IND00 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 16/43 Standard IEEE 754 - sytuacje wyjątkowe Standard IEEE 754 definiuje pięć typów sytuacji wyjątkowych, które powinny być wykryte i sygnalizowane: niepoprawna operacja (invalid operation) - operacja, której argumentem jest SNaN - dodawanie lub odejmowanie typu (+∞) + (-∞) - mnożenie lub dzielenie: 0 ⋅ ∞, 0/0, ∞/∞ - reszta z dzielenia x/y, gdy x = ∞ lub y = 0 - pierwiastek kwadratowy z x, gdy x < 0 dzielenie przez zero (division by zero) nadmiar (overflow) niedomiar (underflow) niedokładność (inexact) - wynik operacji nie może być precyzyjnie wyrażony w przyjętym formacie docelowym bez utraty dokładności Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 17/43 Dokładność arytmetyki zmiennoprzecinkowej Błąd bezwzględny ∆X jest różnicą wartości przybliżonej X i wartości dokładnej X’: ∆X = X − X′ Błąd względny δX jest ilorazem błędu bezwzględnego ∆X i wartości dokładnej X’: X − X ′ ∆X δX = = X′ X′ Rozważmy wykonanie operacji arytmetycznej na dwóch liczbach zmiennoprzecinkowych A’ i B’ (wartości dokładne) W reprezentacji komputerowej odpowiadają im liczby przybliżone: gdzie: A = A′ + ∆A B = B′ + ∆B ∆A - błąd bezwzględny reprezentacji liczby dokładnej A’ ∆B - błąd bezwzględny reprezentacji liczby dokładnej B’ Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Dokładność arytmetyki zmiennoprzecinkowej Dodawanie: Błąd bezwzględny operacji dodawania dwóch liczb: A + B = (A′ + ∆A) + (B′ + ∆B) = A′ + B′ + ( ∆A + ∆B) A + B = A′ + B′ + ∆ ( A + B) ∆ ( A + B) = ∆A + ∆B Błąd względny operacji dodawania dwóch liczb: δ ( A + B) δ ( A + B) ∆ ( A + B) ∆A + ∆B ∆A A′ ∆B B′ = = ⋅ + ⋅ = A′ + B′ A′ + B′ A′ + B′ A′ A′ + B′ B′ A′ ∆A B′ ∆B A′ B′ = ⋅ + ⋅ = ⋅ δA + ⋅ δB A′ + B′ A′ A′ + B′ B′ A′ + B′ A′ + B′ 18/43 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 19/43 Dokładność arytmetyki zmiennoprzecinkowej Dodawanie: Błąd bezwzględny i względny operacji dodawania dwóch liczb: ∆ ( A + B) = ∆A + ∆B, δ ( A + B) = A′ B′ ⋅ δA + ⋅ δB A′ + B′ A′ + B′ Wnioski: Błąd bezwzględny wyniku dodawania zależy tylko od błędów przybliżeń argumentów Błąd względny wyniku dodawania jest mniejszy od sumy błędów względnych argumentów Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Dokładność arytmetyki zmiennoprzecinkowej Odejmowanie: Błąd bezwzględny operacji odejmowania dwóch liczb: A − B = ( A′ + ∆A) − (B′ + ∆B) = A′ − B′ + (∆A − ∆B) A − B = A′ − B′ + ∆ ( A − B) ∆ ( A − B) = ∆A − ∆B Błąd względny operacji odejmowania dwóch liczb: δ ( A − B) δ ( A − B) ∆ ( A − B) ∆A − ∆B ∆A A′ ∆B B′ = = ⋅ − ⋅ = A′ − B′ A′ − B′ A′ − B′ A′ A′ − B′ B′ A′ ∆A B′ ∆B A′ B′ = ⋅ − ⋅ = ⋅ δA − ⋅ δB A′ − B′ A′ A′ − B′ B′ A′ − B′ A′ − B′ 20/43 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 21/43 Dokładność arytmetyki zmiennoprzecinkowej Odejmowanie: Błąd bezwzględny i względny operacji odejmowania dwóch liczb: ∆ ( A − B) = ∆A − ∆B, δ ( A − B) = A′ B′ ⋅ δA − ⋅ δB A′ − B′ A′ − B′ Wnioski: Błąd bezwzględny wyniku odejmowania zależy tylko od błędów przybliżeń argumentów Błąd względny wyniku odejmowania jest tym większy, im mniejsza jest różnica argumentów Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 22/43 Dokładność arytmetyki zmiennoprzecinkowej Przykłady zapobieganie błędom podczas obliczeń: Pierwiastki równania kwadratowego: ax 2 + bx + c = 0 zazwyczaj wyznacza się ze wzoru: x1, 2 − b ± b 2 − 4ac = 2a Duża niedokładność jednego z pierwiastków powstaje, gdy b 2 >> 4ac Rozwiązanie: Zastosowanie algorytmu opartego na wzorach Viety: w x1 = , 2a c x2 = , ax1 ( w = − sgn (b ) b + b 2 − 4ac ) Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 23/43 Dokładność arytmetyki zmiennoprzecinkowej Zapobieganie błędom podczas operacji odejmowania: Obliczanie pola trójkąta według wzoru Herona: S = p(p − a )(p − b)(p − c) , 1 p = ( a + b + c) 2 Bardzo duży błąd powstanie, gdy: a ≈ b+c → (p − a ) ≈ 0 Rozwiązanie: Modyfikacja Kahana: S= 1 [a + (b + c)][c − (a − b)][c + (a − b)][a + (b − c)] 4 Ważna jest kolejność działań: jako pierwsze wykonywane są operacje w nawiasach zwykłych, a potem operacje w nawiasach kwadratowych Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 24/43 Dokładność arytmetyki zmiennoprzecinkowej Mnożenie: Błąd bezwzględny operacji mnożenia dwóch liczb: A ⋅ B = ( A′ + ∆A) ⋅ ( B′ + ∆B) = A′ ⋅ B′ + A′ ⋅ ∆B + B′ ⋅ ∆A + ∆ A2 ⋅4 ∆3 B 1 4 ≈0 A ⋅ B ≈ A′ ⋅ B′ + (A′ ⋅ ∆B + B′ ⋅ ∆A ) ∆ ( A⋅B) ≈ A′ ⋅ ∆B + B′ ⋅ ∆A Błąd względny operacji mnożenia dwóch liczb: δ ( A ⋅B ) ∆ ( A⋅B) A′ ⋅ ∆B + B′ ⋅ ∆A A′ ⋅ ∆B B′ ⋅ ∆A ≈ = = + = δA + δB A′ ⋅ B′ A′ ⋅ B′ A′ ⋅ B′ A′ ⋅ B′ Błąd względny wyniku mnożenia zależy tylko od błędów przybliżeń argumentów Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 25/43 Reprezentacja liczb zmiennoprzecinkowych w C Typy zmiennoprzecinkowe w języku C: Nazwa typu Rozmiar (bajty) Zakres wartości Cyfry znaczące float 4 bajty -3,4⋅1038 … 3,4⋅1038 7-8 double 8 bajtów -1,8⋅10308 … 1,8⋅10308 15-16 long double 10 bajtów -1,2⋅104932 … 1,2⋅104932 19-20 Typ long double może mieć także inny rozmiar: Kompilator Rozmiar (bajty) MS Visual C++ 2008 EE Borland Turbo C++ Explorer Dev-C++ 8 bajtów 10 bajtów 12 bajtów Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 26/43 Reprezentacja liczb zmiennoprzecinkowych w C #include <stdio.h> int main() { float sf = 0.0f; double sd = 0.0; long double slg = 0.0L; int i; for(i=0; i<10000; i++) { sf = sf + 0.01f; sd = sd + 0.01; slg = slg + 0.01L; } printf("float: %.20f\n",sf); printf("double: %.20f\n",sd); printf("long double: %.20Lf\n",slg); } return 0; Środowisko: Microsoft Visual C++ 2008 Express Edition Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 27/43 Reprezentacja liczb zmiennoprzecinkowych w C Microsoft Visual C++ 2008 Express Edition (long double - 8 bajtów) float: 100.00295257568359000000 double: 100.00000000001425000000 long double: 100.00000000001425000000 Borland Turbo C++ Explorer (long double - 10 bajtów) float: 100.00295257568359375000 double: 100.00000000001425349000 long double: 100.00000000000001388000 Dev-C++ (long double - 12 bajtów) float: 100.00295257568359000000 double: 100.00000000001425000000 long double: -680564733841935410000000000000000000000.0000000000000 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 28/43 Algebra Boole’a Opracowana przez angielskiego matematyka George’a Boole’a (1815-1864) Przedstawiona w 1854 roku w opracowaniu pt. „An Investigation of the Laws of Thought on Which To Found the Mathematical Theories of Logic and Probabilities” „Badanie praw myśli, które mogą być podstawą matematycznych teorii logiki i prawdopodobieństwa” Praktyczne zastosowanie znalazła dopiero po wielu latach W 1938 roku Claude Shannon (asystent na MIT) zaproponował zastosowanie jej do rozwiązywania problemów projektowania układów przekaźnikowych Metody Shannona zostały następnie użyte w analizie i projektowaniu elektronicznych układów cyfrowych Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 29/43 Algebra Boole’a Alebra Boole’a określa zasady wykonywania operacji logicznych na danych, które mogą przyjmować tylko jedną z dwóch wartości logicznych: prawda - true - 1 - jedynka logiczna fałsz - false - 0 - zero logiczne Powyższymi danymi mogą być bity, przyjmujące wartości: 0 i 1 Zastosowania algebry Boole’a: technika cyfrowa informatyka teoretyczna matematyka Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 30/43 Algebra Boole’a Tak jak w zwykłej algebrze nad liczbami można wykonywać operacje arytmetyczne (+, -, *, /), tak nad danymi w algebrze Boole’a można wykonywać operacje logiczne Występują trzy różne operacje logiczne, do zapisu których stosuje się różne symbole oraz różne nazwy Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 31/43 Operacje w Algebrze Boole’a Negacja: Operacja jednoargumentowa Stosowane nazwy: negacja, zaprzeczenie, dopełnienie logiczne, nie, not, NIE, NOT _ Stosowane oznaczenia: ¬a, ~a, !a, a’, a Symbol negacji wymawia się jako nie, np. a czytamy nie a Wynikiem negacji jest wartość odwrotna: dla argumentu równego 0 daje w wyniku 1, a dla argumentu równego 1 daje w wyniku 0 Tabela operacji: _ Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 32/43 Operacje w Algebrze Boole’a Alternatywa: Operacja dwuargumentowa Stosowane nazwy: alternatywa, suma logiczna, lub, or, LUB, OR Stosowane oznaczenia: a ∨ b, a ∪ b, a + b , a || b , a | b Operatory powyższe wymawia się jako plus albo lub, np. a ∨ b czytamy a plus b albo a lub b Wynikiem alternatywy jest wartość 1 jeśli przynajmniej jeden z argumentów ma wartość 1; jeśli oba argumenty mają wartość 0, to alternatywa ma też wartość 0 Tabela operacji: Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 33/43 Operacje w Algebrze Boole’a Koniunkcja: Operacja dwuargumentowa Stosowane nazwy: koniunkcja, iloczyn logiczny, i, and, I, AND Stosowane oznaczenia: a ∧ b, a ∩ b, a ⋅ b, a && b, a & b Operatory powyższe wymawia się jako razy albo i, np. a ∧ b czytamy ab lub a razy b albo a i b Wynikiem koniunkcji jest wartość 1 jeśli oba argumenty są równe 1, w pozostałych przypadkach wynik to 0 Tabela operacji: Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 34/43 Operacje w Algebrze Boole’a Różnica symetryczna: Operacja dwuargumentowa Stosowane nazwy: różnica symetryczna, alternatywa wykluczająca, exclusive or, xor, XOR Stosowane oznaczenia: a ⊕ b, a ^ b Wynikiem różnicy symetrycznej jest 1 jeśli argumenty różnią się od siebie, a 0 jeśli są takie same Tabela operacji: a ⊕ b = ( a ⋅ b) + ( a ⋅ b ) a ⊕ b = ( a + b) ⋅ ( a + b ) Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 35/43 Prawa i aksjomaty Algebry Boole’a Łączność (ang. associativity) a + (b + c) = (a + b) + c a ⋅ (b ⋅ c) = (a ⋅ b) ⋅ c Przemienność (ang. commutativity) a+b =b+a a ⋅b = b ⋅ a Absorpcja (ang. absorption), pochłanianie, prawa pochłaniania a + ( a ⋅ b) = a a ⋅ ( a + b) = a gdyż: a + (a ⋅ b) = a ⋅ (1 + b) = a ⋅1 = a a ⋅ ( a + b) = a ⋅ a + a ⋅ b = a + a ⋅ b = a Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 36/43 Prawa i aksjomaty Algebry Boole’a Rozdzielność (ang. distributivity) a + (b ⋅ c) = (a + b) ⋅ (a + c) - rozdzielność iloczynu względem sumy a ⋅ (b + c) = (a ⋅ b) + (a ⋅ c) - rozdzielność sumy względem iloczynu Odwrotność (ang. complement) a + a = 1 - suma dopełnień a⋅a = 0 - iloczyn dopełnień Idempotentność, prawa tautologii a+a =a a⋅a = a Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Prawa i aksjomaty Algebry Boole’a Element neutralny a+0= a a ⋅1 = a Element zerowy, dominacja a +1 = 1 a⋅0 = 0 Podwójne przeczenie, podwójna negacja, inwolucja a =a 37/43 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 38/43 Prawa De Morgana August De Morgan (1806-1871) - angielski matematyk i logik „Negacja sumy jest równa iloczynowi jej zanegowanych składników” a + b = a ⋅b „Negacja iloczynu jest równa sumie jego zanegowanych czynników” a ⋅b = a + b Dla n zmiennych xi, i = 1,2,…,n prawa De Morgana można zapisać w następującej postaci: x1 + x2 + K + xn = x1 ⋅ x2 ⋅ K ⋅ xn x1 ⋅ x2 ⋅ K ⋅ xn = x1 + x2 + K + xn Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 39/43 Wyrażenia i funkcje boolowskie Używając symboli działań, stałych 0 i 1 oraz zmiennych budujemy wyrażenia boolowskie, np. ab + a b , ( a + b )c Każde wyrażenie w naturalny sposób definiuje funkcję boolowską (logiczną, przełączającą), np. f1 (a, b) = ab + a b , ab + a b, f 2 ( a , b ) = ab + a b, f 3 ( a , b, c ) = ( a + b ) c Tę samą funkcję boolowską można przedstawić przy pomocy różnych wyrażeń boolowskich f (a, b) = ab + a b = ab + a b Dwa wyrażenia boolowskie nazywane są równoważnymi jeśli opisywane przez nie funkcje boolowskie są identyczne Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 40/43 Wyrażenia i funkcje boolowskie Sprawdzenie czy wyrażenia boolowskie odpowiadają tej samej funkcji boolowskiej może być dokonane poprzez: stworzenie tablicy prawdy i porównanie stanów wyjściowych sprawdzenie czy postacie kanoniczne wyrażeń są takie same Przykład (tablica prawdy): ab + a b ab + a b oba wyrażenie odpowiadają tej samej funkcji boolowskiej f (a, b) = ab + a b = ab + a b Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 41/43 Wyrażenia i funkcje boolowskie Przykład (tablica prawdy): f ( a , b, c ) = a b + bc a b c a ab ab c bc- 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 - ab+bc ab+bc1 1 1 0 1 1 1 1 Tablica prawdy nazywana jest także tablicą stanów lub tablicą funkcyjną 0 0 0 1 0 0 0 0 Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc 42/43 Wyrażenia i funkcje boolowskie Iloczyn elementarny - iloczyn, w którym każdy argument występuje dokładnie raz (w postaci prostej lub zaprzeczonej) Wyrażenie kanoniczne - suma iloczynów elementarnych, dla których wartość funkcji wynosi 1 Przykład sprowadzenia wyrażenia do postaci kanonicznej: (a + b)c zapisujemy wyrażenie w postaci sumy iloczynów (a + b)c = a c + bc iloczyny, które nie są elementarne mnożymy przez xi i xi a c + bc = a c (b + b ) + bc (a + a ) wykonujemy mnożenie i redukujemy powtarzające się iloczyny a c (b + b ) + bc (a + a ) = a c b + a c b + b c a + b c a = = a{ bc + a b c + abc + a{ bc = a1b4 c +4a2 b c4+4 ab c 3 to samo to samo postac kanoniczna Informatyka 1, studia stacjonarne I stopnia Rok akademicki 2010/2011, Wykład nr 5 dr inż. Jarosław Forenc Koniec wykładu nr 5 Dziękuję za uwagę! 43/43