Sławomir Nowak Podstawy informatyki Logika, algebra Bool’a Arytmetyka cyfrowa
Informatyka nie jest (tylko) nauką o komputerach !!!!!!!!!!!! Podstawy… Informatyka nie jest (tylko) nauką o komputerach !!!!!!!!!!!!
Logika Jedna z podstawowych dyscyplin filozofii, ukształtowana jeszcze przez Pitagorasa, Sokratesa, Arystotelesa. Nauka o wiedzy ogólnej, oddzielonej od metafizyki. Teoria pojęć i posługiwania się pojęciami. Podstawą pojęć są definicje, a wnioskowanie opiera się na dowodach. Głównymi elementami logiki stały się więc definicja i dowód.
Logika W średniowieczu była to dziedzina bardzo trudna. Oparta jest na tzw. sylogizmach. Sylogizm jest działaniem, w którym na podstawie dwóch zdań przesłanek wyprowadza się trzecie, będące wnioskiem. Każdy człowiek jest śmiertelny Sokrates jest człowiekiem Sokrates jest śmiertelny.
Logika Ludzki sposób rozumowania, oparty na doświadczeniu opiera się na tworzeniu uproszczonych (często fałszywych) zbiorów „sylogizmów” – schematów rozumowania, którymi się posługujemy w życiu.
Logika Logika matematyczna Algebra Bool’a Sieci logiczne Arytmetyka systemów cyfrowych XIX w XX w
Logika matematyczna Rachunek zdań – badanie związków logicznych pomiędzy zdaniami. Aby stosować logikę matematyczną, zdania muszą być albo prawdziwe, albo fałszywe (nie musimy jednak znać wartości logicznej zdania). Zdania mogą odnosić się do rzeczywistości. Nie wszystkie zdania są jednak zdaniami w logice matematycznej!
Logika matematyczna Przykłady zdań: „Księżyc krąży wokół Ziemi” zdanie prawdziwe „Każdy pies ma osiem łap” zdanie nie prawdziwe „Jutro będzie padał deszcz” zdanie ma niewiadomą wartość logiczną (hipoteza) „Informatyka jest zabawna” zdanie niejednoznaczne, nie jest to więc zdanie logiczne, gdyż nie jest ani prawdziwe, ani fałszywe
Logika matematyczna Zdania proste można łączyć w bardziej złożone. Można to osiągnąć za pomocą spójników logicznych, np. „i” czy też „lub”. Lista podstawowych spójników: Źródło: http://pl.wikibooks.org/wiki/Matematyka_dla_liceum/Logika#Logika
Logika matematyczna ??? Które z poniższych zdań może być prawdziwe? „Księżyc krąży wokół Ziemi i pies ma osiem łap”. „Księżyc krąży wokół Ziemi lub pies ma osiem łap”. Ziemia krąży wokół Księżyca wtedy i tylko wtedy, gdy pies ma osiem łap „Jeśli pies ma osiem łap, to Księżyc krąży wokół Ziemi”. ???
Logika matematyczna Spójniki logiczne Koniunkcja „Byłem w księgarni i kupiłem książkę”. Oznaczmy to zdanie jako r. Zdanie to można podzielić na dwa zdania proste: „Byłem w księgarni”, które oznaczymy przez p „Kupiłem książkę”, które oznaczymy przez q
Logika matematyczna Spójniki logiczne Alternatywa „Dziś rano posprzątam w pokoju lub pooglądam telewizję” Zdanie r możemy podzielić na dwa zdania proste: zdanie p: „Dziś rano posprzątam w pokoju” zdanie q: „Dziś rano pooglądam telewizję”
Logika matematyczna Spójniki logiczne Negacja „Nieprawda, że byłem dzisiaj w kinie” oznaczmy jako zdanie r
Logika matematyczna Spójniki logiczne Implikacja „Jeżeli będziesz grzeczny, to dostaniesz czekoladę”. Zdanie to składa się z dwóch zdań prostych: zdania p: „Będziesz grzeczny” zdania q: „Dostaniesz czekoladę” Bo mama nie sprecyzowała, co się stanie, jak będzie niegrzeczny…! A więc „Jeśli pies ma osiem łap, to Księżyc krąży wokół Ziemi” jest prawdziwe!
Logika matematyczna Spójniki logiczne Równoważność Gdyby mama wypowiedziała tak: „Dostaniesz czekoladę jedynie wtedy, jeśli będziesz grzeczny” to okazałoby się, że gdyby synek był niegrzeczny, a mama i tak by mu dała czekoladę, to mama by skłamała. A więc „ Ziemia krąży wokół Księżyca wtedy i tylko wtedy, gdy pies ma osiem łap” jest prawdziwe!
Logika matematyczna …i tak dalej: Prawa rachunku zdań. Metody dowodzenia. Analiza rozumowań Polecana pozycja:
W ten sposób powstała tzw. Algebra Boole'a. Algebra Bool’a George Boole ur. 1815 roku Przyszedł na świat jako syn szewca. Nauczył się greki, francuskiego, niemieckiego i włoskiego. Postanowił zostać duchownym… najpierw jednak założył prywatną szkołę. Zaczął też pracować jako nauczyciel matematyki. Opublikował wiele książek i artykułów z matematyki i logiki. W wieku 35 lat poznał osiemastoletnią Mary Everest zaopiekował się nią i… poślubił. Najważniejszym wynalazkiem Boole'a było opracowanie zasad wykonywania operacji logicznych. W ten sposób powstała tzw. Algebra Boole'a. 24 listopada 1864 Boole jak zwykle przebył pieszo trzy kilometry na uczelnię. Tego dnia padał jednak ulewny deszcz, więc cały dzień spędził w mokrym ubraniu, co sprawiło że się przeziębił. Mary Boole wierzyła, że najlepszym sposobem walki z chorobą jest wystawienie chorego na jej przyczynę, regularnie polewała więc łóżko męża wodą. George Boole nie przeżył kuracji, zmarł po dwóch tygodniach…
Algebra Bool’a George Boole odkrył, że funkcja logiczna może być wyrażona w postaci algebraicznej. Konjunkcja jest bardzo podobna do mnożenia zmiennych. Alternatywa odpowiada dodawaniu, z tym , że reguła 1+1=2 w zwykłej algebrze musi być zastąpiona regułą 1 +1=1. Negację wprowadza się jako oddzielną operację.
Algebra Bool’a Formalnie… Źródło: Wikipedia
Algebra Bool’a …pomijając ścisła definicję matematyczną algebra Boole'a ma tylko dwa elementy (zmienne boolowskie): "0" i "1", a operacje tej algebry są zdefiniowane w oparciu o zbiór 3 podstawowych działań: W oparciu o te działania tworzy się funkcje boolowskie są funkcjami, w których argumenty są zmiennymi boolowskimi.
Algebra Bool’a Podstawowe twierdzenia algebry Bool’a:
Algebra Bool’a Mimo wyraźnych analogii nie należy mylić matematycznego rachunku zdań logicznych z algebrą Boole`a, w której w istocie mamy do czynienia z liczbami. Terminy jak „wartość logiczna’’, ,,prawda’’, ,,fałsz”, „nie” „i”, „lub” itd. są ogólnie przyjęte w informatyce i technice cyfrowej, nie są jednak ścisłe z matematycznego punktu widzenia.
Algebra Bool’a Początkowo algebra Boole`a służyła do analizy zdań logicznych i procesów myślowych. Obecnie stała się ona podstawą analizy i projektowania binarnych układów cyfrowych. Źródło: układy_cyfrowe_artur_swaczyna.ppt
Bramki logiczne 24
Bramki logiczne sieci logiczne, układy scalone Układ logiczny: Źródło: układy_cyfrowe_artur_swaczyna.ppt 25
Bramki logiczne sieci logiczne F = ~x * ~y * z + ~x * y * z + x * y F = (x + y + ~z)*(X+ ~y + ~z)*(~x + Z) Źródło: http://lux.dmcs.pl/~piotrowi/wdtcim/wyklad2.pdf 26
Podstawy techniki cyfrowej Budowa komputerów Podstawy automatyki cyfrowej …i na pozostałych wykładach z PI INFORMATYKA Obraz z: http://www.agrobiznes-bolkow.pl/grafa2/drzewo.jpg
Arytmetyka układów cyfrowych Algebra Bool’a Arytmetyka układów cyfrowych Realizację podstawowych działań arytmetycznych na liczbach można sprowadzić do operacji bool’owskich na ciągach binarnych. Różnica w stosunku do arytmetyki klasycznej rozumianej są ograniczone zbiory liczb oraz ograniczona dokładność (na kalkulatorze też nie możemy np. mnożyć do w nieskończoność) 28
Przykład arytmetyki Kod U2: Reprezentacja ujemna liczb binarnych Aby zapisać liczby ujemne w systemie binarnym w komputerze stosuje się kod uzupełnień do dwóch U2. W celu wyodrębnienia liczb ujemnych pierwszy bit liczby binarnej stanowi o jej znaku: ‘0’ oznacza ‘+’, ‘1’ oznacza ‘–‘. Ważne jest przy tym ustalenie ilości bitów przeznaczonych na zapis liczby.
Przykład arytmetyki Kod U2: Reprezentacja ujemna liczb binarnych ZAMIANA LICZB ZAPISANYCH W SYSTEMIE DZIESIĘTNYM NA KOD UZUPEŁNIEŃ DO DWÓCH Dla dodatniej liczby X zamiana na kod uzupełnień do dwóch jest identyczna jak zamiana tej liczby na system binarny. Dla ujemnej liczby X zamiana na kod uzupełnień do dwóch wygląda następująco: X (10) = 2N – | X (10) | = Y (10), Y (10) -> A (U2) , (N jest liczbą bitów przeznaczonych na zapis liczby)
Przykład arytmetyki Kod U2: Reprezentacja ujemna liczb binarnych ZAMIANA LICZB ZAPISANYCH W SYSTEMIE DZIESIĘTNYM NA KOD UZUPEŁNIEŃ DO DWÓCH Przykład: Mając do dyspozycji 8 bitów zamień wartość –25 (10) na kod uzupełnień do 2: -25 (10) = 28 – 25 = 256 – 25 = 231 231 (10) = 1110 0111(2) Więc: -25 (10) = 1110 0111(U2)
Metoda liczby przeciwnej Przykład arytmetyki Kod U2: Reprezentacja ujemna liczb binarnych Metoda liczby przeciwnej Można łatwiej. Bierzemy liczbę |-25| (moduł) 25 (10) = 00011001 (2) Inwersja (zamieniamy 0 z 1 i odwrotnie) 00011001 (2) =(inwersja)> 11100110 Dodajemy 1 11100110 + 1 = 11100111 I mamy taki sam wynik: -25 (10) = 11100111 (U2) Zamieniając z (10) -> (U2) dodajemy 1 Zamieniając z (U2) -> (10) odejmujemy 1
Po co to jest potrzebne? 100 (10) = 001100100 (U2) 100 – 50 = 100 + (-50) = 001100100 (U2) + 111001110 (U2) ---------------- 000110010 => 50 (10) W systemie binarnym bardzo trudno jest wykonać pewne operacje. Na przykład nie wiadomo jak wprost zrobić operację odejmowania. Zastosowanie U2 pozwala zamienić odejmowania na dodawanie liczby przeciwnej. Zamiast 100 – 50, realizujemy 100 + (-50). Oczywiście w sposób binarny.
Przykład arytmetyki Kod U2: Reprezentacja ujemna liczb binarnych Z jeszcze innej strony – podglądnijmy niektóre liczby w kodzie U2 (na 8 bitach): 01111111u2 – 12710 … 00000001u2 – 110 00000000u2 – 010 11111111u2 – (-1)10 11111110u2 – (-2)10 11111101u2 – (-3)10 11111100u2 – (-4)10 0000000u2 – (-128)10
Reprezentacja liczb rzeczywistych ułamki dodatnie w notacji naturalnej stałopozycyjnej Reprezentacja stałopozycyjna: z góry określamy, ile bitów przeznaczamy na część całkowitą, a ile na ułamkową. Liczby zapisywane są zawsze z określoną dokładnością!
Reprezentacja liczb rzeczywistych ułamki dodatnie w notacji naturalnej stałopozycyjnej Przykładowo 8 bitów na liczbę: xxxxx xxx Wartości całkowite Wartości ułamkowe
Reprezentacja liczb rzeczywistych ułamki dodatnie w notacji naturalnej stałopozycyjnej Przykład 1: Zapis liczby 36,75 Sposób wykonania: Część całkowitą zamieniamy „tradycyjnie” 3610 = 100100 XX Część ułamkową mnożymy przez dwa i zapisujemy otrzymaną liczbę całkowitą: Działanie Wynik Część ułamkowa Część całkowita 0,75 * 2 1,5 0,5 1 0,5 * 2 1 0 1 Część ułamkowa to XXXXXX 11 Mamy więc: 100100 11
Reprezentacja liczb rzeczywistych ułamki dodatnie w notacji naturalnej stałopozycyjnej Przykład 2: Zapis liczby 0,1875 Tym razem dla reprezentacji: XX XXXXXX (6 bitów na ułamek) Sposób wykonania: Część całkowita wynosi 00 XXXXXX Część ułamkowa: Działanie Wynik Część ułamkowa Część całkowita 0,1875 * 2 0,375 0,375 0 0,375 * 2 0,75 0,75 0 0,75 * 2 1,5 0,5 1 0,5 * 2 1 0 1 Część ułamkowa to XX 0011 Mamy więc: 00 0011
Ale np. liczba 0,3 będzie reprezentowane niedokładnie: Reprezentacja liczb rzeczywistych ułamki dodatnie w notacji naturalnej stałopozycyjnej Warto zauważyć, że liczby „po przecinku” w notacji binarnej także są związane z potęgami liczby 2: Wniosek: w tej reprezentacji możemy zapisać liczbę z dokładnością do kolejnych potęg liczby 2. Ale np. liczba 0,3 będzie reprezentowane niedokładnie: 0 010011001… itd. Są także inne reprezentacje liczb: zmiennopozycyjne, ułamkowe ze znakiem itp Przykładowo 8 bitów na liczbę: xxxxx xxx 32 16 8 4 2 1 0,5 0,25 0,125 itd… bo: 2-1 , 2-2, 2-3 …
Arytmetyka systemów cyfrowych (stało i zmiennopozycyjna reprezentacja liczb, mnożenie, dzielenie i inne operacje arytmetyczne) INFORMATYKA Obraz z: http://www.agrobiznes-bolkow.pl/grafa2/drzewo.jpg
Dziękuję za uwagę…