Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl http://orion.fis.agh.edu.pl/~grazyna/ D-10 pokój 227 WYKŁAD WSTĘP DO INFORMATYKI
Czym jest informatyka http://pl.wikipedia.org/wiki/informatyka 2 INFORMATYKA - łac. informatio - "wyobrażenie", "wizerunek", "pomysł", ang. computer science, computing science, information technology, informatics Dziedzina nauki i techniki zajmująca się przetwarzaniem informacji w tym technologiami przetwarzania informacji oraz technologiami wytwarzania systemów przetwarzających informacje.
Czym jest informatyka http://pl.wikipedia.org/wiki/informatyka 3 Informatyka jest nauką o abstrakcji, czyli nauką o tworzeniu właściwego modelu reprezentującego problem i wynajdowaniu odpowiedniej techniki mechanicznego jego rozwiązywania. Informatycy tworzą abstrakcje rzeczywistych problemów w formach, które mogą być rozumiane i przetwarzane w pamięci komputera.
Czym jest informatyka ACM Association for Computing Machinery - the world s largest educational and scientific computing society 4 INFORMATYKA - to systematyczne badanie procesów algorytmicznych, które charakteryzują i przetwarzają informację: teoria analiza projektowanie badanie efektywności implementacja zastosowania procesów algorytmicznych
Informatyka (fr. informatique i niem. Informatik) 5 Zakopane październik 1968r - ogólnopolska konferencja poświęcona "maszynom matematycznym prof. Romuald Marczyński (1922 2000 profesor, matematyk, pionier polskiej informatyki)
Informacja 6 Abstrakcja oznaczać będzie pewne uproszczenie, zastąpienie skomplikowanych i szczegółowych okoliczności występujących w świecie rzeczywistym, zrozumiałym modelem umożliwiającym rozwiązanie naszego problemu. Oznacza to, że abstrahujemy od szczegółów, które nie mają wpływu lub mają minimalny wpływ na rozwiązanie problemu. Opracowanie odpowiedniego modelu ułatwia zajęcie się istotą problemu.
Informatyka: mechanizacja abstrakcji 7 modele danych: abstrakcje wykorzystywane do opisywania problemów struktury danych: konstrukcje języka programowania wykorzystywane do reprezentowania modelów danych. Przykładowo język C udostępnia wbudowane abstrakcje takie jak struktury czy wskaźniki, które umożliwiają reprezentowanie skomplikowanych abstrakcji takich jak grafy algorytmy: techniki wykorzystywane do otrzymywania rozwiązań na podstawie operacji wykonywanych na danych reprezentowanych przez abstrakcje modelu danych, struktury danych lub na inne sposoby
Historia informatyki 8 400 300 p.n.e. - grecki matematyk Euklides podaje algorytm znajdowania największego wspólnego dzielnika dwóch dodatnich liczb całkowitych; 830 n.e. - pierwsza matematyczna książka - Pers o nazwisku Mohammed Ibn Musa Abu Djefar znany jako Al Khwarismi napisał Al Gebr We l Mukabala ( Algebra ), w której opisał dużą ilość reguł matematycznych (w tym dodawania, odejmowania, mnożenia i dzielenia zwykłych liczb dziesiętnych). Opis tych procedur był na tyle precyzyjny i formalny, jak na tamte czasy, że właśnie od jego nazwiska pochodzi słowo algorytm.
Historia informatyki 9 Jedną z najwcześniejszych maszyn wykonujących proces sterowany jest krosno tkackie wynalezione w 1801 roku przez Josepha Jacquarda. Tkany wzór określały karty z otworami wydziurkowanymi w różnych miejscach. Te otwory, które wyczuwał specjalny mechanizm, sterowały wyborem nitek i innymi czynnościami maszyny.
Taśma i karta perforowane 10
Historia informatyki 11 1822 - Charles Babbage (1791-1871) rozpoczął budowę maszyny różnicowej do obliczeń nawigacyjnych i tablic matematycznych (pierwszy projekt naukowy wspomagany finansowo przez rząd). Działanie oparte na metodzie Newtona na tak zwanych wielomianach różnicowych Do rozpoczęcia pracy wymagała wprowadzenia danych wejściowych w postaci różnic początkowych, ustawiających stan początkowy maszyny (resetowanie maszyny). Po uruchomieniu wykonywała w sposób automatyczny i w powtarzającej się pętli, sumowanie poszczególnych różnic, wyliczając kolejne wartości wielomianu. Brakowało, możliwości programowania, ponieważ algorytm obliczania wartości wielomianów metodą różnic skończonych był zakodowany na stałe w konstrukcji maszyny.
Historia informatyki 12
Historia informatyki 13 Kolejnym pomysłem Charles Babbage była maszyna analityczna. Składała się z : magazynu (dzisiejszy odpowiednik pamięci), młyna (jednostka licząca) mechanizm sterujący (jednostka wejście / wyjście magazyn młyn sterowanie Jednostka sterująca programowanie
Historia informatyki 14 Córka lorda Byrona w 1842 opisała mechaniczny komputer Charlesa Babbage'a, tzw. maszynę analityczną. Obecnie uważana jest za pierwszego programistę - tworzyła programy dla maszyny Babbage'a, która jednak nie została zbudowana za życia konstruktora. maszyna analityczna tka wzory algebraiczne, tak jak krosno Jacquarda tka kwiaty i liście programowanie Zwróciła uwagę na znaczenie, jakie może mieć wykonywanie różnych instrukcji w zależności od spełnienia określonych warunków instrukcja warunkowa Pisała o korzyściach płynących ze zdolności maszyny analitycznej do wielokrotnego wykonywania tych samych obliczeń instrukcja iteracyjna
Historia informatyki 15 1854 - George Bool opracowuje rachunek logiczny, który stał się później podstawą systemów komputerowych; 1937 - Alan Turing (1912-1954) twórca teorii automatów- podaje teoretyczne podstawy procesu obliczania (maszynę Turinga). W informatyce "automat Turinga" jest teoretycznym modelem komputera. 1943 z inspiracji A. Turinga powstaje Collossus komputer zbudowany do deszyfracji kodu Enigmy
Historia informatyki 16 1938-1938 Claude Shannon (MIT) zasugerował zastosowanie algebry Boole'a do rozwiązywania problemów projektowania układów przekaźnikowych. Jeden z twórców teorii informacji. Jako jeden z pierwszych pojął ważność kodu binarnego i stwierdził, że ciągami zer i jedynek da się opisać tekst, obraz i dźwięk
Historia informatyki 17 1945 - John von Neumann publikuje ideę maszyny z Princeton przechowywanie w pamięci komputera zarówno danych podlegających przetwarzaniu, jak i programu, który na tych danych miał działać. 1965 - pierwszy doktorat z informatyki na Uniwersytecie w Pensylwanii Uznanie informatyki za niezależną dyscyplinę akademicką
Informatyka 18 Informatyka zajmuje się zagadnieniami : zbierania, przechowywania, przetwarzania, przesyłania, prezentacji informacji za pomocą komputerów oraz współpracujących z nimi urządzeń.
Informacja 19 Cym jest informacja? o Bity i Bajty o Kodowanie informacji Systemy zapisu liczb o System binarny (dwójkowy) o Sposoby kodowania: liczb naturalnych, całkowitych, rzeczywistych o Dlaczego pojawiają się błędy i zaokrąglenia Znaki i teksty Obrazy i dźwięki Kompresja i szyfrowanie
Informacja 20 Istnieje kilka różnych definicji pojęcia informacja (encyklopedia PWN) Konstatacja stanu rzeczy, świadomość. Obiekt abstrakcyjny, który w sposób zakodowany może być przesyłany, przetwarzany i używany do sterowania. Powiadamianie społeczeństwa lub określonych zbiorowości w sposób zobiektyzowany, systematyczny i konkretny za pomocą środków masowego przekazu.
Informacja 21 Istnieje kilka różnych definicji pojęcia informacja (encyklopedia PWN) Konstatacja stanu rzeczy, świadomość. Obiekt abstrakcyjny, który w sposób zakodowany może być przesyłany, przetwarzany i używany do sterowania. Powiadamianie społeczeństwa lub określonych zbiorowości w sposób zobiektyzowany, systematyczny i konkretny za pomocą środków masowego przekazu. Informacją zajmuje się nauka zwana Teorią Informacji. Dotyczy ona przekazywania wiadomości ze źródła wiadomości do ich przeznaczenia odbiorcy. Informację możemy mierzyć ilościowo i jakościowo.
Informacja 22 Informację przekazuje możliwość porównania dwóch stanów. Najmniejszą jednostką informacji przechowywaną ą w komputerze jest jeden bit Bit jest to podstawowa elementarna jednostka informacji: wystarczająca do zakomunikowania jednego z co najwyżej dwóch jednakowo prawdopodobnych zdarzeń. Informacje w komputerze przekazywane są poprzez sygnały elektryczne, które przekazywane są w systemie binarnym. Bajt jest to najmniejsza adresowalna jednostka informacji pamięci komputerowej, składająca się z bitów, w praktyce przyjmuje się że jeden bajt to 8 bitów (zostało to uznane za standard w 1964 r.).
Systemy liczbowe 23 System liczbowy to inaczej zbiór reguł zapisu i nazewnictwa liczb. Do zapisu liczb zawsze używa się pewnego skończonego zbioru znaków, zwanych cyframi (np. arabskimi lub rzymskimi), które jednak można zestawiać ze sobą na różne sposoby otrzymując nieskończoną liczbę kombinacji. SYSTEMY LICZBOWE addytywne pozycyjno - wagowe
System jedynkowy 24 Najbardziej prymitywnym systemem liczbowym jest jedynkowy system liczbowy, w którym występuje tylko jeden znak (np. 1). W systemie tym kolejne liczby są tworzone przez proste powtarzanie tego znaku. Przykład: 3 w tym systemie zapisujemy jako 111, 5 w tym systemie zapisujemy jako 11111.
Systemy addytywne 25 Liczby tworzy się przez dodawanie kolejnych symboli. Przykładem addytywnego systemu jest rzymski system liczbowy z podstawowymi wielokrotnościami 10 i 5 Jego cyfry to: I =1, V =5, X =10, L =50, C =100, D =500, M =1000 W tym systemie w niektórych przypadkach występuje odejmowanie, a nie tylko dodawanie. XVI = 10+5+1 = 16 XIV = 10+5-1 = 14
Systemy addytywne 26 Sześćdziesiątkowy system liczbowy, stosowany Mezopotamii (1900p.n.e), w którym podstawowymi wielkościami były 10 i 60, był częściowo addytywny, częściowo pozycyjny. Jest on najstarszym znanym systemem każdego z tych dwóch rodzajów. W życiu codziennym spotykamy ślady babilońskiego systemu w podziale godziny na 60 minut, a minuty na 60 sekund, oraz w podziale kąta na minuty i sekundy kątowe.
Systemy addytywne 27 Zaletą systemów addytywnych jest możliwość zapisu nawet dużych liczb całkowitych (pod warunkiem, że są okrągłe) za pomocą jednego znaku, a wadą złożoność, kłopoty interpretacyjne i zbyt wielka liczba cyfr przy mało okrągłych liczbach, oraz bardzo skomplikowany sposób dokonywania za ich pomocą prostych operacji arytmetycznych, wymagający zapamiętywania długich tabel.
Systemy pozycyjne 28 Każdy system pozycyjny o podstawie g ma przypisaną pewną wartość charakterystyczną, którą nazywamy podstawą systemu. Liczba cyfr, którymi zapisujemy liczbę jest równa wartości podstawy {0,1,..., g-1}. System pozycyjny nie jest w żaden sposób ograniczony co do wielkości zapisywanych liczb. Wartość cyfry w zapisie zależy od jej pozycji, stąd pochodzi nazwa "system pozycyjny". Każda pozycja ma przypisaną wagę. Wagi pozycji są równe kolejnym potęgom podstawy systemu liczonym od strony prawej.
Systemy pozycyjne 29 System pozycyjny o dowolnej podstawie p p > 1 W systemie tym mamy p cyfr, które oznaczymy c i c i {0, 1, 2,, c p-1 } Zapisujemy pewną liczbę za pomocą n cyfr: c n-1 c n-2... c 2 c 1 c 0
Systemy pozycyjne 30 c n-1 c n-2... c 2 c 1 c 0 wagi pozycji p n-1 p n-2... p 2 p 1 p 0 c 0 p 0 + c 1 p 1... + c n-2 p n-2 + c n-1 p n-1 i 0 n 1 i c i p
Systemy pozycyjne 31 p = 7, zbiór cyfr to { 0,1,2,3,4,5,6 } 43521 (7) =??? (10) 43521 (7) = 1 * 7 0 + 2 * 7 1 + 5 * 7 2 + 3 * 7 3 + 4 * 7 4 43521 (7) = 1 * 1 + 2 * 7 + 5 * 49 + 3 * 343 + 4 * 2401 43521 (7) = 10893 (10)
Systemy pozycyjne 32 p = 17, zbiór cyfr to {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G} AGF63B (17) =??? (10) AGF63B (17) = 11 * 17 0 + 3 * 17 1 + 6 * 17 2 + 15 * 17 3 + 16 * 17 4 + 10 * 17 5 AGF63B (17) = 11 *1 + 3 * 17 + 6*289 + 15 *4.913 + 16 *83.521 + 10*1.419.857 AGF63B (17) = 15 610 397 (10)
Systemy pozycyjne 33 Podany sposób obliczania wartości liczby zapisanej w dowolnym systemie pozycyjnym jest poprawny, lecz z punktu widzenia wykonywania obliczeń czasochłonny, ponieważ występują w nim potęgi podstawy. Działanie potęgowania jest czasochłonne - komputery dużo szybciej wykonują mnożenie i dodawanie.
Schemat Hornera 34 Sposób obliczenia wartości wielomianu dla danej wartości argumentu wykorzystujący minimalną liczbę mnożeń. L = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p 1 + C 0 p 0 Ponieważ p 1 = p oraz p 0 = 1 L = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p + C 0
Schemat Hornera 35 L = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p + C 0 L = p*( C 4 p 3 + C 3 p 2 + C 2 p 1 + C 1 )+ C 0 L = p*(p*( C 4 p 2 + C 3 p 1 + C 2 ) + C 1 )+ C 0 L = p*(p*( p*(c 4 p 1 + C 3 )+ C 2 ) + C 1 )+ C 0 L = p*(p*( p*(p*(c 4 )+ C 3 )+ C 2 ) + C 1 )+ C 0
Schemat Hornera 36 L = p*(p*( p*(p*(c 4 )+ C 3 )+ C 2 ) + C 1 )+ C 0 Możemy przekształcić ze względu na przemienność mnożenia: L = (((C 4 *p + C 3 )* p + C 2 ) *p + C 1 ) *p + C 0
Schemat Hornera 37 L Dla = ((((C wielomianu 4 ) *p + C 3 n-tego )* p + Cstopnia 2 ) *p + Cw 1 ) zwykłej *p + C 0 postaci należy mnożeń, a dla wielomianu po 2 Budujemy algorytm : zastosowaniu schematu Hornera tylko n mnożeń! L 0 = C 4 - wartość początkowa wykonać n (n+1) L 1 = L 0 p + C 3 = C 4 p + C 3 L 2 = L 1 p + C 2 = (C 4 p + C 3 ) p + C 2 = C 4 p 2 + C 3 p + C 2 L 3 = L 2 p + C 1 = (C 4 p 2 + C 3 p + C 2 ) p + C 1 = C 4 p 3 + C 3 p 2 + C 2 p + C 1 L 4 = L 3 p + C 0 = (C 4 p 3 + C 3 p 2 + C 2 p + C 1 ) p + C 0 = C 4 p 4 + C 3 p 3 + C 2 p 2 + C 1 p + C 0
Systemy pozycyjne 38 Jeśli wartość w ma w danym systemie pozycyjnym o podstawie p rozwinięcie c n-1 c n-2...c 1 c 0, to pomnożenie tej wartości przez podstawę systemu p spowoduje w rozwinięciu przesunięcie wszystkich cyfr o jedną pozycję w lewo w = c n-1 p n-1 + c n-2 p n-2 +... + c 1 p 1 + c 0 p 0 w*p = c n-1 p n + c n-2 p n-1 +... + c 1 p 2 + c 0 p 1 + 0 p 0
Systemy pozycyjne 39 Zaletą systemów pozycyjnych jest ich Klarowność Łatwość dokonywania nawet złożonych operacji arytmetycznych Możliwość zapisu dowolnie dużej liczby, jednak o zapisu bardzo dużych liczb (nawet okrągłych) jest potrzebna duża liczba cyfr. Współcześnie powszechnie używany jest system dziesiątkowy. W informatyce stosowany jest system dwójkowy (binarny), ósemkowy i szesnastkowy (heksadecymalny)
System dwójkowy (binarny) 40 Podstawę systemu binarnego tworzy liczba p = 2 Zapis liczby tworzymy za pomocą cyfr {0, 1 } Reprezentacja jest jednoznaczna, jeśli przyjmiemy, że nie stosujemy wiodących zer. 2 5 = 32 2 4 = 16 2 3 = 8 2 2 = 4 2 1 = 2 2 0 = 1 0 1 1 0 1 0 0*32 + 1*16+ 1*8 + 0*4 +1*2 + 0*1 = 26
System dwójkowy (binarny) 41 Algorytm zamiany liczby zapisanej w systemie dziesiętnym na zapis binarny. Liczbę dziesiętną dzielimy systematycznie przez 2. Zapamiętujemy resztę z dzielenia. Reszty te zapisane w odwrotnej kolejności tworzą zapis binarny liczby.
System dwójkowy (binarny) 42 2436 : 2 = 1218 reszta 0 1218 : 2 = 609 reszta 0 609 : 2 = 304 reszta 1 304 : 2 = 152 reszta 0 152 : 2 = 76 reszta 0 76 : 2 = 38 reszta 0 38 : 2 = 19 reszta 0 19 : 2 = 9 reszta 1 9 : 2 = 4 reszta 1 4 : 2 = 2 reszta 0 2 : 2 = 1 reszta 0 1 : 2 = 0 reszta 1 2436 (10) 100110000100 (2)
43 Zapis heksadecymalny Zapis heksadecymalny jest związany z potęgami liczby 16 0 E 1 A 1 0 16 5 = 1048576 16 4 = 65536 16 3 = 4096 16 2 = 256 16 1 = 16 16 0 = 1 0*16 5 + E*16 4 + 1*16 3 + A*16 2 +1*16 1 + 0*16 0 0*16 5 + 14*16 4 + 1*16 3 + 10*16 2 +1*16 1 + 0*16 0 = 924176
System dwójkowy (binarny) 44 Konwersja dwójkowo - szesnastkowa 1110101000101010111101010101 1110 1010 0010 1010 1111 0101 0101 E A 2 A F 5 5 1110101000101010111101010101 (2) = EA2AF55 (16)
System dwójkowy (binarny) 45 Konwersja szesnastkowo - dwójkowa 3FAC72608D 3 F A C 7 2 6 0 8 D 0011 1111 1010 1100 0111 0010 0110 0000 1000 1101 3FAC72608D (16) = 11111110101100011100100110000010001101 (2) )
Systemy binarny 46 NBS - Natural Binary System p = 2 zbiór cyfr to {0,1} Wartość liczby zapisanej w systemie binarnym c n 1 c c c c c 2 i n 1 n 2... 2 1 0 i i 0 Na n pozycjach można zapisać liczby od 0 do 2 n 1
Algebra Boole a 47 Przy projektowaniu i analizowaniu układów cyfrowych w komputerach i innych systemach cyfrowych stosuje się algebrę Boole'a - (algebra logiki) - teoria działań algebraicznych na zbiorze dwuelementowym {0,1}, Funkcja logiczna może być wyrażona w postaci algebraicznej An Investigation of The Laws of Thought on Which to Found the Mathematical Theories of Logic and Probabilities (1854) Badanie praw myśli, które mogą być podstawą matematycznych teorii logiki i prawdopodobieństwa
Algebra Boole a 48 Niech dany będzie niepusty zbiór B (przynajmniej dwa różne elementy), w którym wyróżnione są dwa elementy. W zbiorze tym określamy działania sumy logicznej + iloczynu dopełnienia logicznego ~
Algebra Boole a - dwuelementowa 49 Negacja - NOT x ~x 0 1 1 0 Różnica symetryczna XOR x y x y 0 1 1 0 0 0 1 1 0 1 0 1 x y = (~x y)+(x ~y) Koniunkcja - AND x y x y 0 1 0 0 0 0 1 1 1 1 0 0 Alternatywa - OR x y x + y 0 1 1 0 0 0 1 1 1 1 0 1
Dodawanie binarne 50 Dodawanie liczb binarnych wykonuje się tak samo jak w systemie dziesiątkowym, to znaczy rząd po rzędzie, zaczynając od najniższego. 1 1 1 1 0 1 1 0 1 - pierwszy składnik + 1 0 1 0 0 - drugi składnik 1 0 0 0 0 0 1 - suma 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10
51 58 27 85 Dodawanie elementarne: 0 0 0 1 0 1 0 1 1 1 1 1 0 00111010 00011011 00111010 00011011 01010101 1 00 1110 10 000 110 11 0 1 1 00 1110 10 000 110 11 0 10 1 1 00 1110 10 000 110 11 10 10 1 1 00 1110 10 000 110 11 0 10 10 1
Przepełnienie (reprezentacja 8-bitowa) 52 11111111 (2) + 00000001 (2) = 1 00000000 (2) (255 + 1 = 0) 00000000 (2) 00000001 (2) = 1 11111111 (2) (0 1 = 255)
Zastosowania operacji logicznych 53 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x + y 0 1 1 0 0 0 1 1 1 1 0 1 Maskę o długości słowa binarnego, w której wszystkie bity są wyzerowane z wyjątkiem bitu n-tego. Wykonujemy operację alternatywy nad słowem binarnym i maską. W wyniku n-ty bit słowa zostanie ustawiony na 1.
Zastosowania operacji logicznych 54 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x + y 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 zmieniane słowo OR 0 0 0 0 1 0 0 0 maska bitowa 0 1 0 1 1 0 1 1 wynik operacji 0 1 0 1 1 0 1 1 zmieniane słowo OR 0 0 0 0 1 0 0 0 maska bitowa 0 1 0 1 1 0 1 1 wynik operacji
Zastosowania operacji logicznych 55 Zerowanie zadanego bitu- w słowie binarnym ustawić n-ty bit na 0. x y x y 0 1 0 0 0 0 1 1 1 1 0 0 Maskę o długości słowa binarnego, w której wszystkie bity są ustawione na 1, z wyjątkiem bitu n-tego (wyzerowany). Wykonujemy operację koniunkcji nad słowem binarnym i maską. W wyniku n-ty bit słowa zostanie ustawiony na 0.
Zastosowania operacji logicznych 56 Ustawianie zadanego bitu - w słowie binarnym ustawić n-ty bit na 1. x y x y 0 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 zmieniane słowo AND 1 1 1 1 0 1 1 1 maska bitowa 0 1 0 1 0 0 1 1 wynik operacji 0 1 0 1 1 0 1 1 zmieniane słowo AND 1 1 1 1 0 1 1 1 maska bitowa 0 1 0 1 0 0 1 1 wynik operacji
Liczby stałoprzecinkowe 57 Do zapisu przeznaczona jest z góry określona ilość bitów. Pozycję przecinka ustala się arbitralnie, w zależności od wymaganej dokładności. Wartość liczby stałoprzecinkowej jest równa sumie iloczynów jej cyfr przez wagi pozycji tych cyfr. 1 n m i i c i p m n n c c c c c c c c...,... 2 1 0 1 2 2 1 m m n n p c p c p c p c p c p c...... 2 2 1 1 0 0 1 1 1 1
Liczby stałoprzecinkowe 58 213,132 (4) 213,132 (4) = 2 4 2 + 1 4 1 + 3 4 0 + 1 4-1 + 3 4-2 + 2 4-3 213,132 (4) = 2 16 + 1 4 + 3 1 + 1 1 / 4 + 3 1 / 16 + 2 1 / 64 213,132 (4) = 32 + 4 + 3 + 1 / 4 + 3 / 16 + 2 / 64 213,132 (4) = 39 + 16 / 64 + 12 / 64 + 2 / 64 213,132 (4) = 39 30 / 64
Liczby stałoprzecinkowe 59 Zakres liczb o n bitach części całkowitej i m bitach części ułamkowej. C max = 2 n 1 L max = C max + U max U max = 1 2-1 + 1 2-2 + 1 2-3 +... + 1 2 -m U max = 1 / 2 + 1 / 4 = 1-1 / 4 U max = 1 / 2 + 1 / 4 + 1 / 8 = 1-1 / 8 U max = 1 / 2 + 1 / 4 + 1 / 8 +.. +... + 1 / 2 -m = 1-1 / 2 -m = (2 m - 1)/2 m 0, 2 n 1 + 2m 1 2 m
Dokładność reprezentacji stałoprzecinkowej 60 Dla reprezentacji 4-bitowe części ułamkowej 0,0001 (2) = 0,0625 (10) 0,0010 (2) = 0,125 (10) 0,0011 (2) = 0,1875 (10) 0,0100 (2) = 0,25 (10).. 0,0111 (2) = 0,4375 (10) 0,1000 (2) = 0,5 (10) 0,1110 (2) = 0,875 (10) 0,1111 (2) = 0,9375 (10)
Kodowanie liczb ze znakiem 61 Mamy z góry ustaloną liczbę cyfr używanych do zapisu wartości, np. 8, 16, 24, 32,... Najstarszy bit ma inne znaczenie niż reszta cyfr - pełni funkcję bitu znaku. Bit znaku równy 0 liczba jest dodatnia Bit znaku równy 1 liczba jest ujemna
Kodowanie liczb ze znakiem 62 Mamy z góry ustaloną liczbę cyfr używanych do zapisu wartości, np. 8, 16, 24, 32,... Najstarszy bit ma inne znaczenie niż reszta cyfr - pełni funkcję bitu znaku. Bit znaku równy 0 liczba jest dodatnia Bit znaku równy 1 liczba jest ujemna
Kod uzupełnień U2 63 1. Wszystkie bity zapisu liczby posiadają swoje wagi. 2. Najstarszy bit jest bitem znaku i ma wagę ujemną równą (-2 n-1 ) 3. Pozostałe bity posiadają wagi takie jak w NBC c n 2 n 1 i n 1cn 2... c2c1c0 cn 1( 2 ) ci 2 i 0
Kod uzupełnień U2 64 c n 2 n 1 i n 1cn 2... c2c1c0 cn 1( 2 ) ci 2 i 0 01101011 (U2) = 64 + 32 + 8 + 2 + 1 = 107 (10 ) 11101011 (U2) = -2 7 + 64 + 32 + 8 + 2 + 1 = -128 + 107 = (-21) (10)
Kod uzupełnień U2 65 Zakres n bitowej liczby w kodzie U1 [-2 n-1... 2 n-1 1] Zakres ten jest niesymetryczny. Dla reprezentacji 8-bitowej 01111111 (U2) =2 7 1=127 10000000 (U2) = 2 7 = 128
66 Przeliczanie liczb dziesiętnych na kod U2 dodatnia - znajdujemy jej przedstawienie binarne i uzupełniamy zerami do przyjętego formatu. 3 (10) = 0011 (U2 ) ujemna - bit znaku ma wartość 1. Ponieważ stoi on na pozycji o wadze -2 n-1, a reszta liczby jest dodawana do tej wagi, to musimy znaleźć taką wartość, która dodana do wagi bitu znaku da nam liczbę kodowaną. Wartość tą kodujemy na pozostałych bitach.
67 Przeliczanie liczb dziesiętnych ujemnych na U2-3 (10) w 4-bitowym kodzie U2. Bit znaku ma wartość -2 3, czyli -8. Aby otrzymać -3, do -8 musimy dodać liczbę 5 i tą wartość kodujemy na pozostałych bitach: -8 + 5 = -3-3 (10) = 1101 (U2) liczba -45 (10) w 8-bitowym kodzie U2. Bit znaku ma wartość -2 7, czyli -128-128 + 45 = 83 = 1010011 (2) -45 (10) = 11010011 (U2)
68 Przeliczanie liczb dziesiętnych ujemnych na U2 do liczby 2 n (n - ilość bitów w formacie U2) dodajemy przetwarzaną liczbę dziesiętną, w wyniku otrzymujemy wartość kodu dwójkowego równoważnego bitowo kodowi U2 przetwarzanej liczby; wynik dodawania zapisujemy w postaci naturalnego kodu dwójkowego 2 8 + (-45) = 256-45 = 211 = 11010011 (U2)
Kod uzupełnień U2(liczby czterobitowe) 69 3 +2 5 Dodawanie: 0011 +0010 0101-6 +(-3) 7 1010 +1101 10111 Niedomiar (-3) +(-2) -5 7 +(-5) 2 1101 + 1110 1 1011 0111 + 1011 1 0010 7 +1-8 0111 +0001 1000 Nadmiar
Kod uzupełnień U2 70 Uzupełnieniem dwójkowym liczby x zapisanej za pomocą n bitów nazywamy liczbę x U2 =2 n -x x = 0101 x U2 =2 4 -x = 10000 00101 =01011 y = 1011 y U2 =2 4 -y = 10000 01011 =00101 y U2 = x czyli ( x U2 ) U2=x
Kod uzupełnień U2 71 Zakres liczb reprezentowanych w n-bitowym kodzie U2 niesymetryczny [-2 n-1, 2 n-1 1] Operacje arytmetyczne nie wymagają dodatkowych operacji Jednoznaczna wartość 0
Notacja nadmiarowa 72 Kolejność 3 bitowych słów kodowych 000 001 010 011 100 101 110 111 NBC 0 1 2 3 4 5 6 7 U1 0 1 2 3-3 -2-1 0 ZM 0 1 2 3 0-1 -2-3 U2 0 1 2 3-4 -3-2 -1
Notacja nadmiarowa 73 Wartość binarna słowa kodowego jest równa kodowanej liczbie pomniejszonej o pewną stałą zwaną nadmiarem (ang. excess lub bias) KOD Wartości słów kodowych w systemach z nadmiarem Wartości nadmiaru - bias 4 3 2 1 0 (-1) (-2) (-3) (-4) 000-4 -3-2 -1 0 1 2 3 4 001-3 -2-1 0 1 2 3 4 5 010-2 -1 0 1 2 3 4 5 6 011-1 0 1 2 3 4 5 6 7 100 0 1 2 3 4 5 6 7 8 101 1 2 3 4 5 6 7 8 9 110 2 3 4 5 6 7 8 9 10 111 3 4 5 6 7 8 9 10 11
Notacja nadmiarowa 74 Wartość dziesiętna liczby zapisanej w dwójkowym kodzie z nadmiarem b n-1 b n-2...b 2 b 1 b 0 (BIAS) = b n-1 2 n-1 + b n-2 2 n-2 +... + b 2 2 2 + b 1 2 1 + b 0 2 0 - bias gdzie b - bit, cyfra dwójkowa 0 lub 1 n - liczba bitów w zapisie liczby bias - nadmiar, odchyłka w stosunku do naturalnych wartości słów kodowych 00011111 (BIAS=63) = 2 4 + 2 3 + 2 2 + 2 1 + 2 0-63 00011111 (BIAS=63) = 31-63 00011111 (BIAS=63) = (-32) (10)
Notacja nadmiarowa 75 15 1111 7 14 1110 6 13 1101 5 12 1100 4 11 1011 3 10 1010 2 9 1001 1 8 1000 0 7 0111-1 6 0110-2 5 0101-3 4 0100-4 3 0011-5 2 0010-6 1 0001-7 0 0000-8 Excess 8 Notation: Aby zakodować liczbę dziesiętną należy: 1. dodać do niej wartość 8, 2. zapisać wynik w postaci binarnej, 3. uzupełnić o brakujące początkowe zera.
Liczby duże i małe 76 Zapisywanie liczb oznaczających bardzo duże lub bardzo małe wartości notacja naukowa. Gwiazda Proxima Centauri znajduje się w odległości 9460800000000 [km], 9,4608 x 10 12. Masa elektronu wynosi me = 0,00000000000000000000000000091095 [g], czyli 9,1095 x 10-28 [g]
Zapis zmiennopozycyjny 77 Liczba w tym zapisie składa się z trzech części: liczby stałoprzecinkowej podstawy systemu potęgi zwanej wykładnikiem lub cechą. L = m * p c m mantysa p podstawa systemu c cecha - wykładnik potęgowy
Zapis zmiennopozycyjny 78 L = m * p c 325 10 20 = 32,5 10 21 = 3,25 10 22 = 0,325 10 23 = dokładność liczby wielkość liczby Znormalizowana liczba zmiennoprzecinkowa to taka, w której mantysa spełnia nierówność: p > m 1
Standard zapisu zmiennoprzecinkowego IEEE 754 79 Standard IEEE 754 definiuje dwa rodzaje liczb zmiennoprzecinkowych: 32-bitowe (pojedynczej precyzji - ang. single precision) 64-bitowe (podwójnej precyzji - ang. double precision). Format zapisu zmiennoprzecinkowego IEEE 754 L = m * p c 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity mantysy
Standard zapisu zmiennoprzecinkowego IEEE 754 80 Zapis cechy w notacji nadmiarowej umożliwia szybkie porównywanie liczb 00101010 > 00011001 Format zapisu zmiennoprzecinkowego IEEE 754 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity mantysy Wzrost ilości bitów cech liczb zmiennoprzecinkowych wpływa na ich zakres. L = m * p c L = m * p c Wzrost liczby bitów mantys wpływa na ich precyzję, czyli dokładność odwzorowywania liczb rzeczywistych.
Standard zapisu zmiennoprzecinkowego IEEE 754 81 Format zapisu zmiennoprzecinkowego IEEE 754 Mantysy są zapisywane w stałoprzecinkowym kodzie U1. 32 bity (1 bit) b 31 (8 bitów) b 30... b 23 (BIAS=127) (23 bity)b 22... b 0 (U1) Mantysa jest prawie zawsze znormalizowana (p>m 1 ) - jej wartość liczbowa zawiera się pomiędzy 1 a 2. 64 bity (1 bit) b 63 (11 bitów) b 62... b 52 (BIAS=1023) (52 bity)b 51... b 0 (U1) Opis pół bitowych bit znaku bity kodu cechy bity ułamkowe bity mantysy mantysy Pierwszy bit całkowity mantysy zawsze wynosi 1 => zapamiętujemy tylko bity ułamkowe. Mantysa dłuższa o jeden bit - zwiększamy jej rozdzielczość do 24 bitów dla formatu pojedynczej precyzji i do 53 bitów dla formatu podwójnej precyzji.
Standard zapisu zmiennoprzecinkowego IEEE 754 82 Z kodu wydzielamy poszczególne pola Do odczytanej mantysy dodajemy na początku 01 i przecinek - otrzymujemy dodatnią liczbę stałoprzecinkową w kodzie U1. Obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru: L (IEEE 754) = m * p c = (-1) z *m*2 c 01000010110010000000000000000000 10010000000000000000000 (IEEE 754) ) z = 0 - liczba jest dodatnia c = 10000101 (BIAS=127) = 133-127 = 6 m = 01,10010000000000000000000 (U1) = 1 9 / 16
Standard zapisu zmiennoprzecinkowego IEEE 754 83 Z kodu wydzielamy poszczególne pola L (IEEE 754) = (-1) z * m * 2 c = (-1) 0 * 1 9 / 16 * 2 6 = 25 / 16 * 2 6 = Do 25 odczytanej * 2 2 = 25 * 4 mantysy = 100 (10) dodajemy na początku 01 i przecinek - 01000010110010000000000000000000 otrzymujemy dodatnią liczbę stałoprzecinkową (IEEE w 754) kodzie = 100 U1. (10) Obliczamy wartość cechy i mantysy, a następnie wyliczamy wartość liczby wg wzoru: L (IEEE 754) = m * p c = (-1) z *m*2 c 01000010110010000000000000000000 10010000000000000000000 (IEEE 754) ) z = 0 - liczba jest dodatnia c = 10000101 (BIAS=127) = 133-127 = 6 m = 01,10010000000000000000000 (U1) = 1 9 / 16
Zakres w standardzie IEEE 754 84 W pojedynczej precyzji Z (IEEE 754) = - 3,4 10 38... 3,4 10 38 W podwójnej precyzji Z (IEEE 754) = - 1,8 10 308... 1,8 10 308
Bit, bajt, kilobajt, megabajt 85 Bajt najmniejsza adresowalna jednostka informacji pamięci komputerowej. W praktyce przyjmuje się, że jeden bajt to 8 bitów Bajt przyjmuje wartości od 00000000 do 11111111 czyli od 0 do 255 dziesiętnie. Np. 10101100 odpowiada wartości 172 (NBC) Jednostki 8, 16, 32 i więcej bajtów nazywa się SŁOWAMI
Bit, bajt, kilobajt, megabajt 86 Bajty grupowane są w większe jednostki. 1024 bajty to kilobajt [kb] 1024 kb to megabajt [Mb] 1024 Mb to gigabajt [Gb] 1024 Gb to terrabajt [Tb] dlaczego 1024 a nie 1000 jak w układzie SI? W informatyce kilo oznacza 2 10 =1024 W układzie SI kilo oznacza 10 3 =1000
Bit, bajt, kilobajt, megabajt 87 Co można zapamiętać w jednym bajcie? Liczby dziesiętne w małym przedziale, np. -100 do 200, czy 0 do 255; Pojedynczy znak z klawiatury (zgodnie z tzw. tabelą ASCII) np.: a, 4, * ; Składając bajty w dłuższe ciągi można zapamiętywać dowolne teksty, np.: Ala ma kota da się zapisać w 11 bajtach.
Kodowanie znaków 88 Dane wprowadzane za pomocą klawiatury, czyli znaki alfabetu, cyfry i znaki takie jak!,?, itd. nazywane są znakami alfanumerycznymi. Proces zamiany znaku wpisanego z klawiatury na jego reprezentację cyfrową nazywamy kodowaniem. Kod ASCII (ang. American Standard Code for Information Interchange) 7-bitowy kod przyporządkowujący liczby z zakresu 0 127: literom alfabetu angielskiego, cyfrom, znakom przestankowym i innym symbolom oraz poleceniom sterującym. litera a jest kodowana jako liczba 97 znak spacji jest kodowany jako 32.
Kodowanie znaków 89
Kodowanie znaków 90 liczby z zakresu 128 255: służą do zapisu znaków tworzenia tabel lub ramek oraz do zapisu znaków narodowych. Strony kodowe to wersje kodu ASCII różniące się interpretacją symboli od 128 do 255..
Kodowanie znaków 91 Tekst zapisany w standardzie ISO 8859-2 Tekst zapisany w standardzie Windows 1250
Kodowanie znaków 92 256 znaków alfanumerycznych nie dawało możliwości zakodowania znaków diakrytycznych wielu języków np.: japońskiego, arabskiego, hebrajskiego itp. kod UNICODE o dłlugości16 bitów dla każdego znaku, a to daje już możliwość zakodowania 216, czyli 65536 znaków UNICODE jest jednoznaczny i uniwersalny, jest standardem dla XML, UNICODE mówi jakim znakom odpowiadają kody, a nie jak te znaki mają wyglądać Za sposób wypisywania znaków odpowiada kodowanie UTF-8, UTF-16 i UTF-32.
Architektura von Neumanna 93 EDVAC (1945 r.) - Electronic Discrete Variable Automatic Computer IAS komputer skonstruowany w Princeton Institute for Advanced Studies przez von Neumanna ALU Pamięć główna Programowa jednostka sterująca Wejściewyjście Jednostka centralna CPU
Maszyna von Neumann a 94 Pamięc główna służy do przechowywania zarówno danych jak i rozkazów programów Pamięć główna ALU może wykonać działania na liczbach binarnych Jednostka arytmetyczno logiczna ALU Programowa jednostka sterująca Wejściewyjście Jednostka sterująca pobiera rozkazy z pamięci i powoduje ich wykonanie Pracą urządzeń wejściewyjście kieruje jednostka sterująca
Budowa komputera 95 Magistrala (ang. Bus) ścieżki, po których przesyłane są informacje pomiędzy elementami płyty głównej; ze względu na rodzaj przesyłanych informacji możemy wyróżnić magistralę adresową, magistralę danych i magistralę sterującą. RAM (ang. Random Access Memory) pamięć operacyjna przechowująca uruchomione programy oraz dane i wyniki programów; jej zawartość jest tracona w momencie wyłączenia komputera. CPU (ang. Central Processing Unit) centralna jednostka przetwarzająca, której zadaniem jest wykonywanie rozkazów (składających się na program komputerowy) oraz sterowanie pracą pozostałych układów systemu komputerowego. I/O (ang. Input/Output) układ wejścia/wyjścia (interfejs, kontroler) dopasowujący format informacji, poziom sygnału elektrycznego oraz szybkość transmisji urządzenia zewnętrznego do parametrów systemu komputerowego. ROM (ang. Read Only Memory) pamięć stała przechowująca tzw. BIOS (ang. Basic Input Output System) zawierający m. in. programy testujące podstawowe układy systemu oraz umożliwiające załadowanie do pamięci operacyjnej dalszego oprogramowania.
Systemy operacyjne 96 System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy w sposób wygodny i wydajny. Abraham Silberschatz
Systemy operacyjne 97 Użytkownik 1 Użytkownik 2 Użytkownik 3 Użytkownik n Kompilator Asembler Edytor tekstu Baza danych Programy systemowe i użytkowe SYSTEM OPERACYJNY Sprzęt komputerowy
Zarządzanie zasobami Zadania systemu operacyjnego 98 Definicja interfejsu użytkownika Udostępnianie systemu plików Udostępnianie środowiska do wykonywania programów użytkownika o mechanizm ładowania i uruchamiania programów o mechanizmy synchronizacji oraz komunikacji procesów Sterowanie urządzeniami wejścia-wyjścia Obsługa podstawowej klasy błędów