Informacje Podstawy informatyki (2) dr inż Sebastian Pluta pluta@icispczpl Instytut Informatyki Teoretycznej i Stosowanej informatyka to nauka o przetwarzaniu i przechowywaniu informacji informacja to: konstatacja stanu rzeczy, wiadomość powiadamianie społeczeństwa lub określonych zbiorowości w sposób zobiektywizowany, systematyczny i konkretny za pomoca środków masowego przekazu obiekt abstrakcyjny, który w postaci zakodowanej może być przechowywany, przesyłany, przetwarzany i użyty do sterowania Nowa encyklopedia powszechna, PWN 1998 podstawowa jednostka informacji to bit wystarcza do zakomunikowania jednego z co najwyżej dwóch zdarzeń Podstawy informatyki (2) p1 Systemy liczbowe (1) Systemy liczbowe (2) system pozycyjny to taki, w którym znaczenie znaków zależy od ich pozycji system wagowy to taki, w którym dla każdej pozycji znaku przypisana jest inna waga ogólny opis pozycyjnego wagowego systemu liczbowego: gdzie: L = n i=m N jest podstawa systemu, N 2, m,n Z, m 0,n 0,m n, a {0,,N 1} a i N i najbardziej popularnym systemem jest system dziesiętny, dla którego N = 10 na przykład dla liczby 4703,32 zapisanej w systemie dziesiętnym: czyli: L = 3 i= 2 a i 10 i L = 2 10 2 + 3 10 1 + 3 10 0 + 0 10 1 + 7 10 2 + 4 10 3 = = 0,02+0,3+3+0+700+4000 = 4703,32 Podstawy informatyki (2) p2 Podstawy informatyki (2) p3
Systemy liczbowe (3) Przeliczanie liczb w różnych systemach inne systemy: (L) N na przykład dla liczby (4703,32) 8 : czyli: L = 3 i= 2 a i 8 i L = 2 8 2 + 3 8 1 + 3 8 0 + 0 8 1 + 7 8 2 + 4 8 3 = = 0,03125+0,375+3+0+448+2048 = 2499,40625 zamiana całkowitej liczby dziesiętnej L na liczbę w systemie o podstawie N: (L) N = R k R k 1 R 2 R 1 L N = L 1 reszta R 1 L 1 N = L 2 reszta R 2 L k 1 N = 0 reszta R k Podstawy informatyki (2) p4 Podstawy informatyki (2) p5 Przeliczanie liczb w różnych systemach Przeliczanie liczb w różnych systemach na przykład zamiana liczby 3490 na liczbę w systemie o podstawie 8: 3490 8 = 436 reszta 2 436 8 = 54 reszta 4 54 8 = 6 reszta 6 6 8 = 0 reszta 6 zamiana ułamka dziesiętnego L na ułamek w systemie o podstawie N: L N = L 1 cz cakowita C 1 cz uamkowa U 1 N = L 2 cz cakowita C 2 cz uamkowa U k 1 N = C k cz cakowita C k (L) N = 0,C 1 C 2 C k czyli: 3490 = (6642) 8 Podstawy informatyki (2) p6 Podstawy informatyki (2) p7
Przeliczanie liczb w różnych systemach System dwójkowy i szesnastkowy (1) na przykład zamiana ułamka 0,9692382125 na liczbę w systemie o podstawie 8: 0,9692382125 8 = 7,75390625 cz cał 7 0,75390625 8 = 6,03125 cz cał 6 0,03125 8 = 0,25 cz cał 0 0,25 8 = 2,0 cz cał 2 system dwójkowy (binarny) jest podstawowym systemem liczbowym w informatyce system szesnastkowy (heksadecymalny) jest często uzupełnieniem systemu binarnego w informatyce znaczne zmniejszenie ilości cyfr liczby w systemie heksadecymalnym w stosunku do liczby binarnej łatwość przeliczania liczb binarnych na szesnastkowe i na odwrót czyli: 0,9692382125 = (0,7602) 8 Podstawy informatyki (2) p8 Podstawy informatyki (2) p9 System dwójkowy i szesnastkowy (2) System dwójkowy i szesnastkowy (3) Interpretacja binarna liczb w systemie szesnastkowym: dziesiętna dwójkowa szesnast dziesiętna dwójkowa szesnast 0 0000 0 8 1000 8 1 0001 1 9 1001 9 2 0010 2 10 1010 A 3 0011 3 11 1011 B 4 0100 4 12 1100 C 5 0101 5 13 1101 D 6 0110 6 14 1110 E 7 0111 7 15 1111 F zamiana liczb binarnych na heksadecymalne: (1001110111010) 2 = = (0001 0011 1011 1010) 2 = (13BA) 16 zamiana liczb heksadecymalnych na binarne: (87DF3) 16 = (1000 0111 1101 1111 0011) 2 = = (10000111110111110011) 2 Podstawy informatyki (2) p10 Podstawy informatyki (2) p11
Jednostki informacji (1) Jednostki informacji (2) 1 bit 1 b 1 bajt (ang byte) 1 B = 8 b na jednym bajcie można zapisać 2 8 czyli 256 różnych informacji 2 10 B = 1024 B = 1 kb (kilobajt) 2 20 B = 1048576 B = 1024 2 B = 1024kB = 1 MB (megabajt) 2 30 B = 1073741824 B = 1024 3 B = 1024MB = 1 GB (gigabajt) 2 40 B = 11099511627776 B = 1024 4 B = 1024GB = 1 TB (terabajt) 10 3 B = 1000 B = 1 kb (kilobajt) 10 6 B = 1000000 B = 1000kB = 1 MB (megabajt) 10 9 B = 1000000000 B = 1000MB = 1 GB (gigabajt) 10 12 B = 1000000000000 B = 1000GB = 1 TB (terabajt) 2 10 B = 1024 B = 1 KiB (kibibajt) 2 20 B = 1048576 B = 1024 2 B = 1024KiB = 1 MiB (mebibajt) 2 30 B = 1073741824 B = 1024 3 B = 1024MiB = 1 GiB (gibibajt) 2 40 B = 11099511627776 B = 1024 4 B = 1024GiB = 1 TiB (tebibajt) Podstawy informatyki (2) p12 Podstawy informatyki (2) p13 Kodowanie liczb całkowitych (1) Kodowanie liczb całkowitych (2) na jednym bajcie można zapisać liczby 0; 255, czyli (00000000) 2 ;(11111111) 2 w celu zwiększenia zakresu liczb całkowitych, stosuje się zapis na większej liczbie bajtów, np: dla dwóch bajtów można zapisać 2 16 liczb, czyli 0; 65535 dla liczb całkowitych ujemnych, jeżeli przyjmiemy jeden bit znaku: bit 7 6 5 4 3 2 1 0 waga znak 64 32 16 8 4 2 1 w przedstawiony sposób nie koduje się liczb ze znakiem, ponieważ: 00000000 0 10000000 0 dla liczb całkowitych ze znakiem stosuje się tzw kod uzupełnień (U2): bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 na jednym bajcie można za pomoca tego kodu przedstawić liczby z zakresu 128; 127 na przykład: 00000000 0 00000001 1 10000000 128 10000001 127 01111111 127 11111111 1 Podstawy informatyki (2) p14 Podstawy informatyki (2) p15
Kodowanie liczb całkowitych (3) Kodowanie liczb całkowitych (4) Przykładowe operacje na liczbach zapisanych w kodzie uzupełnień: operacje arytmetyczne wykonuje się jak na zwykłych liczbach binarnych ignorujac pożyczki i przeniesienia poza zakres, np: 0 0 0 0 0 0 0 1 1 + 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 liczbę przeciwna uzyskuje się poprzez zanegowanie wszystkich bitów i dodanie wartości 1, np: NOT 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 + 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 75 + 0 0 1 1 1 0 0 1 57 1 1 1 0 1 1 1 0 18 0 0 1 1 1 0 0 1 57 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 0 58 Podstawy informatyki (2) p16 NOT 1 0 1 1 0 1 0 1 75 0 1 0 0 1 0 1 0 + 1 0 1 0 0 1 0 1 1 75 Podstawy informatyki (2) p17 Kodowanie liczb całkowitych (5) Kodowanie liczb rzeczywistych (1) spotyka się również kod uzupełnień o następujacych wagach: bit 7 6 5 4 3 2 1 0 waga 128 64 32 16 8 4 2 1 na jednym bajcie można za pomoca tego kodu przedstawić liczby z zakresu 127; 128 na przykład: 00000000 0 00000001 1 10000000 128 10000001 127 01111111 127 11111111 1 operacje na liczbach wykonuje się jak w każdym kodzie uzupełnień kodowanie liczb rzeczywistych z przecinkiem umieszczonym na stałe, np: 1 1 1 1 1 1 1 1, 1 1 1 1 1 1 1 1 daje wartość: 255 255 256 = 255,99609375 taki sposób kodowania ma wiele wad: nieduże liczby możliwe do zakodowania mała dokładność (precyzja) zapisu części ułamkowej trudny do oszacowania bład bezwzględny obliczeń Podstawy informatyki (2) p18 Podstawy informatyki (2) p19
Kodowanie liczb rzeczywistych (2) Kodowanie liczb rzeczywistych (3) zapis zmiennoprzecinkowy: L = s m N c gdzie: N podstawa systemu s = sgn(l), c cecha, całkowity wykładnik m mantysa, znormalizowana najczęściej do przedziału (0,1) N ;1) dla liczby 2389, 8765: dla liczby (11010,11011) 2 : 2389,8765 = 0,23898765 10 4 (11010,11011) 2 = (0,1101011011) 2 2 (101) 2 liczby zmiennoprzecinkowe o ustalonej precyzji sa liczbami przybliżonymi precyzja liczb zmiennoprzecinkowych to liczba cyfr za pomoca których wyrażona jest mantysa jeśli wynik jakiejkolwiek operacji wymaga większej precyzji to zostanie on zaokraglony powoduje to tzw błędy zaokragleń w obliczeniach wykonywanych na liczbach zmiennoprzecinkowych, np: liczba 0,249 10 12 wymaga dla zapisu mantysy 3 cyfr działanie: 0,249 10 12 + 1 = 249000000001 = 0249000000001 10 12 co powoduje konieczność użycia 12 cyfr do zapisu mantysy Podstawy informatyki (2) p20 Podstawy informatyki (2) p21 Kodowanie liczb zmiennoprzecinkowych Kodowanie liczb zmiennoprzecinkowych dla kodowania (FP2) liczb zmiennoprzecinkowych przyjmuje się mantysę znormalizowana do przedziału 1;2) czyli (1) 2 ;(10) 2 ) mantysę zapisuje się w postaci liczby całkowitej dodatniej oraz bitu znaku, cechę przy pomocy kodu uzupełnień dla liczby: (00010110) (FP2) c = (0010) (U2) = 2 m = (1,110) 2 = 1 3 4 L = ( 1) 0 1 3 4 22 = 7 przyjmijmy dla jednego bajta: znak mantysy cecha mantysa bit 7 6 5 4 3 2 1 0 waga s 8 4 2 1 2 1 2 2 2 3 dla liczby: 0,875 0,875 = (0,111) 2 = ( 1) 0 (1,11) 2 2 ( 1) 2 c = 1 = (1111) (U2) m = (1,110) 2 0,875 = (01111110) (FP2) L = ( 1) s 1m 2 c Podstawy informatyki (2) p22 Podstawy informatyki (2) p23
Kodowanie liczb zmiennoprzecinkowych Kodowanie znaków (liter) (1) norma IEEE 754 obejmuje trzy standardowe formaty kodowania liczb zmiennoprzecinkowych: typ liczby bity cechy bity mantysy interpretacja REAL*4, short real 8 23 ( 1) s 1m 2 c REAL*8, long real 11 52 ( 1) s 1m 2 c REAL*10, temp real 15 64 ( 1) s 0m 2 c maksymalna wartość cechy c przy zerowej wartości mantysy m daje w zależności o bitu znaku +INF lub INF maksymalna wartość cechy c dla dowolnej wartości różnej od zera mantysy m reprezentuje przypadek dla którego ciag bitów nie jest liczba NaN (ang Not a Number) najbardziej popularnym standardem kodowania znaków jest kod ASCII zapisuje znaki na 7 bitach obejmuje kody od 0 do 127 np wielkie litery alfabetu łacińskiego odpowiadaja kodom 65 90, małe 97 122, cyfry arabskie 48 57 użycie pozostałego ósmego bitu bajta tworzy tzw Extended ACSII (rozszerzony kod ASCII) potrzeba reprezentacji innych znaków (np narodowych znaków diakrytycznych) spowodowała potrzebę stworzenia dodatkowych kodów istnieje kilka standardów kodowania polskich znaków, najbardziej popularne to: ISO-8859-2 (Latin-2) i Windows-1250 Podstawy informatyki (2) p24 Podstawy informatyki (2) p25 Kodowanie znaków (liter) (2) Algebra Boole a (1) współczesnym standardem kodowania znaków jest Unicode (UCS) powstał jako próba ujednolicenia kodowania znaków różnych języków w Internecie pierwotnie składał się z 16 bitów dzisiejszy standard UCS ISO 10646 operuje na 31-bitach UCS obejmuje wszystkie podstawowe alfabety świata: arabski, hebrajski, japoński, koreański, chiński kody liter znaków diakrytycznych alfabetu łacińskiego znajduja się w zakresie 256 383 Unicode Algebra Boole a jest algebra z trzema operacjami na argumentach z dwuwartościowego zbioru {0,1} wynik tych operacji jest również zawarty w podanym dwuwartościowym zbiorze operacje algebry Boole a: suma logiczna (suma boolowska, alternatywa, ) dwuargumentowa jeżeli co najmniej jeden z argumentów jest równy 1, to wynik jest równy 1 w przeciwnym razie przyjmuje wartość 0 Podstawy informatyki (2) p26 Podstawy informatyki (2) p27
Algebra Boole a (2) Algebra Boole a (3) operacje algebry Boole a (c d): iloczyn logiczny (iloczyn boolowski, koniunkcja, ) dwuargumentowy wynik iloczynu jest równy 1 wtedy i tylko wtedy, gdy wszystkie argumenty przyjmuja wartość 1, w przeciwnym razie przyjmuje wartość 0 negacja (dopełnienie, inwersja, ) jednoargumentowa wynik negacji jest równy 1, gdy argument ma wartość 0 i odwrotnie Działania Algebry Boole a spełniaja następujace aksjomaty: przemienność łaczność a b = b a a b = b a (a b) c = a (b c) (a b) c = a (b c) rozdzielność a (b c) = (a b) (a c) a (b c) = (a b) (a c) Podstawy informatyki (2) p28 Podstawy informatyki (2) p29 Algebra Boole a (4) Algebra Boole a (2) identyczność a 0 = a, a 1 = 1 a 1 = a, a 0 = 0 dopełnienie a a = 1 a a = 0 prawa De Morgana (a b) = a b (a b) = a b Tabela prawdy dla dwóch zmiennych: a b a b a b a b 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 0 Podstawy informatyki (2) p30 Podstawy informatyki (2) p31
Historia informatyki (1) Historia informatyki (2) od 440 pne do XVIII wieku liczydło Abacusa urzadzenie ułatwiajace liczenie, prekursor liczydła i maszyn liczacych, składało się z tablicy z pionowymi rowkami, w których umieszczano kamyki 1620 r suwak logarytmiczny (suwak rachunkowy) wynaleziony przez Edmunda Guntera prosty przyrzad ułatwiajacy obliczenia, powszechnie używany przez inżynierów do końca lat 70-tych Podstawy informatyki (2) p32 Podstawy informatyki (2) p33 Historia informatyki (3) Historia informatyki (4) 1642 r arytmometr mechaniczna maszyna liczaca, poprzedniczka kalkulatora, wynaleziona przez Blaise Pascal a 1941 r Konrad Zuse budowa pierwszego kalkulatora elektromechanicznego 1946 r ENIAC, 1948 r Mark I prezentacje pierwszych maszyn cyfrowych 1822 r projekt maszyny analitycznej Charles a Babbage a wykorzystujacej karty perforowane Podstawy informatyki (2) p34 Podstawy informatyki (2) p35
Historia informatyki (5) Historia informatyki (6) 1958 r XYZ pierwsza polska maszyna cyfrowa 1967 r rozpoczęcie seryjnej produkcji komputera ODRA 1024 1969 r Dennis Ritchie i Ken Thompson, Bell Labs pierwsza wersja systemu UNIX 1971 r Intel pierwszy komercyjny mikroprocesor (4004): 4 bitowy, cena: 300$ 1974 r Intel powstanie mikroprocesora 16-bitowego 8080 1977 r pierwsze komputery osobiste zaprezentowane przez firmę Apple Computer 1981 r IBM udostępnia pierwsze komputery osobiste swej architektury wyposażone w system operacyjny MS-DOS 10 1982 r Compaq pierwszy komputer przenośny 1983 r funkcjonalny poczatek Internetu 1992 r liczba hostów w Internecie sięga miliona 1992 r DEC Alpha pierwszy procesor 64-bitowy Podstawy informatyki (2) p36 Podstawy informatyki (2) p37