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