Teoretyczne Podstawy Informatyki
cel zajęć Celem kształcenia jest uzyskanie umiejętności i kompetencji w zakresie budowy schematów blokowych algor ytmów oraz ocenę ich złożoności obliczeniowej w celu optymizacji czasu ich wykonania.
Po zakończeniu kursu student powinien: formułować słowny opis algorytmu, wskazać złożoność obliczeniową, wyliczać podstawowy algorytmy. konstruować algorytmy w postaci schematów blokowych; analizować złożoność algorytmów czasowo-pamięciową. analizować schematy blokowe, definiować dane wyjściowe i wejściowe.
reprezentacja liczb w systemach komputerowcy!
Ile gramów to kilogram? 1 B = 8 b najmniejsza ilość informacji potrzebna do określenia, który z dwóch równie prawdopodobnych stanów przyjął układ Ile bajtów to kilobajt :)? 2 10 B = 1 024 B = 1 kb 1 MB > 2 20 = 1024 2 = 1 048 576 B GB TB PB
Arytmetyka komputerowa Pozycyjne Systemy liczbowe; Reprezentacja liczb całkowitych i rzeczywistych; Arytmetyka na liczbach stałoprzecinkowych; Arytmetyka na liczbach zmiennoprzecinkowych
Pozycyjne systemy liczbowe - metoda zapisywania liczb Pozycyjny system liczbowy: para (q;c), gdzie: q>=2 jest liczbą naturalną (podstawa systemu), C jest skończonym zbiorem znaków{0; 1;...; q-1}.! W systemie pozycyjnym liczbę przedstawia się jako ciąg cyfr. Wartość tej liczby zależy zarówno od cyfr jak i miejsca, na którym się one znajdują w tym ciągu. System wagowy dla każdej pozycji znaku przypisana jest inna waga.
Organizacja bitów w liczbie dwójkowej / binarnej bit bit bit bit n-1 n-2 1 0 MSB LSB MSB najstarszy, najbardziej znaczący bit (ang. most significant bit) LSB najmłodszy, najmniej znaczący bit (ang. little significant bit)
system dziesiętny dziesiętny (dziesiątkowy) system liczbowy (q = 10);! W technice komputerowej: i= dwójkowy (binarny) (q = 2); ósemkowy (q = 8); heksadecymalny (q = 16); w zapisie tym cyfry 0,...,9 uzupełnione są symbolami graficznymi kolejnych pierwszych liter alfabetu. L = n m i c i q
gdzie: c k, c k-1,..., c 1,c 0 C, q>=2, m<=0, n>=0, m<=n L = n i= m i c i q
Wagowy system liczbowy przykład liczba 4570,23 (10) L = 3 c i 10 i zapis w systemie dziesiętnym i= 2 3*10-2 + 2*10-1 + 0*10 0 + 7*10 1 + 5*10 2 + 4*10 3 = 4000 + 500 + 70 + 0,2 + 0,03
System dwójkowy (binarny)
kod BCD Binary-Coded Decimal - system dziesiętny zakodowany dwójkowo sposób zapisu liczby polegający na zakodowaniu kolejnych cyfr dziesiętnych tej liczby w systemie dwójkowym przy użyciu tylko czterech młodszych bitów. 127 > 0001 0010 0111 (podstawowy wariant) 010101110010(BCD) = 0101 0111 0010 = 572(10)
Algorytm konwersji liczby dziesiętnej do postaci binarnej Dzielimy systematycznie daną liczbę dziesiętną przez 2 i zapamiętujemy reszty z dzielenia. Reszty te zapisane w odwrotnej kolejności tworzą zapis binarny liczby. 23:2=11, reszta=1 11:2=5, reszta=1 5:2 =2, reszta=1 2:2 =1, reszta=0 1:2 =0, reszta=1 Odczytujemy liczbę binarną (dwójkową) od dołu reszt do góry.
Operacje arytmetyczne na liczbach dwójkowych 1001 przeniesienie (ang. carry) 1 1001 liczba pierwsza 9 +1101 liczba druga +13 10110 wynik (suma) 22 przeniesienie C suma S 0 + 0 0 0 0 + 1 0 1 1 + 0 0 1 1 + 1 1 0 Liczby dwójkowe dodawane są parami, tzn. nie można ich dodawać w postaci słupków składających się z wielu wierszy.!! Dodawanie wielu liczb dwójkowych wykonuje przez kolejne dodawanie par tzn. B1 + B2 + B3 + B4 wykonuje się następująco B1 + B2 = W1, W1 + B3 = W2, W2 + B4 = W3 = WYNIK! Taki proces sumowania określa się jako sumowanie akumulacyjne.
System uzupełnień do dwóch U2 - nazwa wzięła się ze sposobu obliczania liczb przeciwnych Liczba zapisana na n bitach w kodzie U2 ma następujące wagi: -2 n-1 2 n-2 2 n-1.. 2 2 2 1 2 0 liczba 4bitowa pozwala na zapis liczb w zakresie 8..7 np. 101(2)U2 -> -2 2 *1 + 2 1 *0 + 2 0 *1 = -4+1 = -3 Aby zapisać liczbę dwójkową (2)U2 na większej liczbie bitów, bez zmiany jej wartości, należy przed nią dopisać jedynki: np. 101(2)U2 = 1101(2)U2 = 1111 1101(2)U2
liczba przeciwna 11101101(U2) = -1 (2 7 ) + 1 2 6 + 1 2 5 + 0 2 4 + 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 = 19! przeciwna negacja liczby: 00010010 (U2) dodanie 1: 00010010 + 00000001 = 00010011 > 1 (2 4 )+1 (2 2 )+1 (2 1 )=16+2+1=19
po co kod U2?? Jest obecnie najpopularniejszym sposobem zapisu liczb całkowitych w systemach cyfrowych. Jego popularność wynika z faktu, że operacje dodawania i odejmowania są w nim wykonywane tak samo jak dla liczb binarnych bez znaku. Z tego też powodu oszczędza się na kodach rozkazów procesora.
odejmowanie Przykład 11-5=6 1011 (11) > U2: 01011 (dodajemy tylko 0) -0101 (-5) > U2: 1011 (negacja+ 1 ) > 11011 (zwiekszenie liczby bitow) 01011 11011 100110 odrzucamy pierwszy bit (pogrubiony) rozszerzający zakres liczb dodawanych
Przykład 2 15-8=7 2-2=0 2-4=-2
System szesnastkowy System szesnastkowy zwany heksadecymalnym podstawa systemu: liczba 16 wykorzystuje 16 cyfr dziesięć podstawowych (0-9) litery A, B, C, D, E, F odpowiadające kolejno wartości: 10, 11, 12, 13, 14, 15
Zapis liczby naturalnej! (L)16=ck16k+ ck-116k-1+...+ c1161+c0160! (300)16= 3*162 + 0*161 + 0*160 = (3*256+0+0)10 = (768)10 (FF)16= F*161 + F*160 = (15*16+15)10 = (255)10 Każdej cyfrze systemu szesnastkowego odpowiada czteropoz ycyjn a liczba sys temu dwójkowego.! Zam i a n a licz by d wójk o we j n a sze snas t kową polega na p rz y p i s a n i u k ażd y m k o le jny m czterem pozycjom zerojedynkowym o dp o w ie dnie j cy f r y układu szesnastkowego.
zapis stałoprzecinkowy? zmiennoprzecinkowy zapis stałoprzecinkowy: 13,345671 (2cyfry, 6 cyfr) podział na część całkowitą i ułamkową przed zapisem liczb: pozwala dopasować zakres do dużych liczby lub do dużej dokładności obliczeń. możliwa arytmetyka całkowitoliczbowa. zapis zmiennoprzecinkowy: 4,39*10 3 dla mantysy i wykładnika ilość cyfr jest z gòry ustalona reprezentowana z pewną skończoną dokładnością i należy do skończonego zbioru wartości.
liczby stałoprzecinkowe - fixedpoint liczba stałoprzecinkowa: część całkowita oraz część ułamkowa: 10,573 > część całkowita: 10 część ułamkowa: 573 > 5/10+7/100+3/1000= 5*10-1 + 7*10-2 + 3*10-3
Wagi bitów części całkowitej mają wartości (od najbardziej znaczącego bitu): 2 k-1,, k 0 wagi bitów części ułamkowej mają wartości: 2-1,,2- n dokładność reprezentacji wynosi (jest równa): wadze najmniej znaczącego bitu części ułamkowej.
k=4-bity część całkowita n=2-bity część ułamkowa 1111,11 -> 2 3 +2 2 +2 1 +2 0 +2-1 +2-2 = 15,75 // 1/2+1/4!! 1011,102 = 2 3 + 2 1 + 2 0 + 2-1 = 11,510 arytmetyka stałoprzecinkowa może zostać zrealizowana za pomocą działań całkowitoliczbowych
liczby zmiennoprzecinkowe reprezentacja liczby rzeczywistej zapisanej za pomocą notacji naukowej. mantysa i cecha > podłoga i sufit S (ang. sign) znak liczby, 1 lub -1 M (ang. mantissa) znormalizowana mantysa, liczba ułamkowa B (ang. base) podstawa systemu liczbowego (2 dla systemów komputerowych) E (ang. exponent) wykładnik, cecha, liczba całkowita
Mantysa jest znormalizowana, należy do przedziału [1, B) Zarówno dla mantysy jak i wykładnika liczba cyfr jest z góry ustalona. Dana liczba jest reprezentowana z pewną skończoną dokładnością i należy do skończonego zbioru wartości.
zakres wykładnik: max > Bn-1 min > -Bn+1 gdzie n+1 - liczba cyfr przeznaczona na wykładnik! mantysa: max > B-B-(m-1) min > 1 gdzie m - liczba cyfr przeznaczona na mantysę blad wzgledny
przykład B=10 mantysa 4 cyfry wykładnik 2 cyfry liczba do zapisu: 60,89523 > M=60,89523 ; E=0 M=6,089523, E=1. ~ 6,090 wynik: 6,090 10 1 = 6,090 E 1 Mantysa jest znormalizowana, należy do przedziału [1, B) bład względny 1/10 3 0,0000125 > 1,250 10-5 = 1,25 E -5 Liczba cyfr znaczących jest mniejsza od dostępnej, więc nie jest potrzebne zaokrąglanie
Implementacje sprzętowe Mantysa należy do przedziału [1,2), 1.xxxxx... (x bit o dowolnej wartości). część całkowita znana = 1 > nie jest zapamiętywana IEEE 754, w oparciu o który realizuje się obecnie wszystkie implementacje sprzętowe liczb zmiennoprzecinkowych. Definiuje on dwie klasy liczb: pojedynczej precyzji (ang. single) podwójnej precyzji (ang. double)
precyzja/zakres - IEEE 754 pojedyncza precyzja: cecha > 8bitów: -127 128 mantysa > 23bity + 1bit > [1,2) podwójna precyzja: cecha > 11bitów: -1023 1024 mantysa > 52bity + 1bit > [1,2)
01000010110010000000000000000000 cecha mantysa 01000010110010000000000000000000 c=10000101=133-127(bias) = 6! mantysa=01,10010000000000000000000= 1+1/2+1/16=1 (8+1)/16 = 1 9/16.! (-1) z *m*2 c =1 9/16*2 6 =25/16*16*2 2 =25*4=100!
Liczby pojedynczej precyzji c = 11111110(BIAS=127) c = 254-127=127 m = 01,11111111111111111111111 m = (2 24-1) / 2 23 max = 3,4028234663852885981170418348452 10 38
podwójnej precyzji Z(IEEE 754) = - 1,8 10308... 1,8 10 308
precyzja zakres precyzja: dokładność z jaką dana liczba może być reprezentowana przybliżona ilość dziesiętnych cyfr znaczących np: 4 cyfry dziesiętne > 12,34 ; 2345 > ok 12346 > :( > 1234!!
mantysa - ilość bitów jedną cyfrę dziesiętną można zapisać za pomocą log2(10) bitów a mając 24 bity?? > 7,2 cyfry > 7 cyfr dla 53 bitów > 15, 96 cyfry > 15:16 cyfr