Wykład 1 1-1 Informatyka nauka zajmująca się zbieraniem, przechowywaniem i przetwarzaniem informacji. Informacja obiekt abstrakcyjny, który w postaci zakodowanej moŝe być przechowywany, przesyłany, przetwarzany i uŝyty do sterowania. Aby informacja mogła być przesłana, przechowana lub przetworzona naleŝy ją zakodować, tworząc w ten sposób dane, będące materialnym odwzorowaniem informacji. Informacja przetwarzana przez komputer przedstawiana jest w postaci binarnej, czyli w postaci ciągu zerojedynkowego. Jednostki informacji Najmniejszą jednostką informacji jest bit. Bit przyjmuje wartość 0 lub 1. Jest utoŝsamiany z cyfrą binarną w systemie dwójkowym (0 lub 1). Oznaczany jest małą literą b 1b. Najmniejszą adresowalną jednostką informacji pamięci komputerowej jest bajt. Bajt składa się z ośmiu bitów. Oznaczany jest duŝą literą B (1B). 1 B = 8 b Bajt moŝna podzielić na dwie połówki 4-bitowe nazywane tetradami (ang. nibbles). Nazwa Liczba bajtów Kilobajt KB 2 10 = 1 024 1024 B Megabajt MB 2 20 = 1 048 576 1024 KB Gigabajt GB 2 30 = 1 073 741 824 1024 MB Terabajt TB 2 40 = 1 099 511 627 776 1024 GB
Wykład 1 1-2 Stosowanie przedrostków kilo, mega, giga jest niezgodne z systemem SI. Nazwa System SI System binarny RóŜnica Kilo 10 3 =1 000 2 10 =1 024 2,40% Mega 10 6 =1 000 000 2 20 =1 048 576 4,86% Giga 10 9 =1 000 000 000 2 30 =1 073 741 824 7,37% tera 10 12 =1 000 000 000 000 2 40 =1 099 511 627 776 9,95% Systemy liczbowe System liczbowy zbiór zasad umoŝliwiających przedstawienie liczb za pomocą umownych znaków (cyfr) oraz wykonywanie działań na tych liczbach. W systemach komputerowych najbardziej powszechne uznanie znalazły następujące pozycyjne systemy liczbowe: dziesiętny, dwójkowy, szesnastkowy i ósemkowy. Są to systemy pozycyjne wagowe tzn. znaczenie cyfry zaleŝy od jej połoŝenia (pozycji), które zajmuje ona w liczbie, oraz kaŝdej cyfrze jest przypisana inna waga, np. system dziesiętny - liczba 444 (kaŝda cyfra ma inne znaczenie) W pozycyjnym systemie liczbowym liczby zapisuje się jako ciągi znaków, z których kaŝdy jest mnoŝnikiem kolejnej potęgi liczby stanowiącej podstawę systemu. Ilość róŝnych cyfr systemu nazywa się jego podstawą. Wartość liczbowa cyfry w systemie pozycyjnym określona jest przez wagę pozycji zaleŝną od numeru pozycji. Wagi cyfr wzrastają od prawej do lewej strony zbioru cyfr stanowiącego liczbę. Waga kaŝdej kolejnej pozycji jest P-krotnie większa od wagi pozycji poprzedniej (P- podstawa systemu). RozwaŜmy system pozycyjny o podstawie P zawierający n cyfr:
Wykład 1 1-3 - liczba róŝnych cyfr do zapisu liczby jest równa wartości podstawy P - stosuje się cyfry od 0 do P-1 - kaŝda pozycja posiada swoją wagę - waga jest równa podstawie systemu podniesionej do potęgi o wartości pozycji KaŜdą liczbę moŝemy zapisać według wzoru: n = 1 i L c i P = i= 0 = c 0 P 0 + c 1 P 1 + c 2 P 2 +... + c n-2 P n-2 + c n-1 P n-1 gdzie L to liczba, P podstawa systemu liczbowego, zbiór cyfr dostępnych w systemie C={0,..., P-1}, n ilość cyfr w przedstawieniu liczby, c i cyfra i-tej pozycji liczby. RozwaŜmy system pozycyjny o podstawie P zawierający n cyfr części całkowitej i m cyfr części ułamkowej: Wartość liczby obliczamy w następujący sposób: n 1 i= m i L = c i P = = c -m P -m + + c -2 P -2 + c -1 P -1 + c 0 P 0 + c 1 P 1 + c 2 P 2 +... + c n-2 P n-2 + c n-1 P n-1 Dziesiętny system liczbowy W systemie dziesiętnym - podstawa P=10 - zbiór dozwolonych cyfr C={0, 1, 2, 3, 4, 5, 6, 7, 8, 9} - wagi pozycji są kolejnymi potęgami liczby 10.
Wykład 1 1-4 L = c 0 10 0 + c 1 10 1 + c 2 10 2 +... + c n-2 10 n-2 + c n-1 10 n-1 y 1537 (10) = 1 1000 + 5 100 + 3 10 + 7 1 375,25 (10) = 3 100 + 7 10 + 8 1 + 2 0,1 + 5 0,01 Dwójkowy system liczbowy System liczbowy uŝywany w komputerach do przechowywania danych i programów. Pamięci komputerowe zbudowane są z dwustanowych elementów pamiętających, które mogą znajdować się w jednym z dwóch stanów. Przypisane im są wartości 0 i 1. Zalety występowania tylko dwóch stanów logicznych: - Prosta realizacja układów elektronicznych wykonujących przetwarzanie i przesyłanie informacji. - Łatwość konstruowania układów pamięci. - MoŜliwość interpretacji jednej cyfry binarnej jako wartości logicznej (Boole a). Wada: długość zapisu.
Wykład 1 1-5 W systemie dwójkowym - podstawa P=2 - zbiór dozwolonych cyfr C={0, 1} - wagi pozycji są kolejnymi potęgami liczby 2. L = c 0 2 0 + c 1 2 1 + c 2 2 2 +... + c n-2 2 n-2 + c n-1 2 n-1 Zapis binarny pozwala za pomocą n cyfr zapisywać liczby z zakresu: 0 L 2 n -1 Np. dla n=8 ten zakres wynosi 0 L 2 8-1 = 256-1 = 255. y 11010011 (2) = 1 128 + 1 64 + 0 32 + 1 16 + 0 8 + 0 4 + 1 2 + 1 1 = 211 (10) 1011,011 (2) = 1 8 + 0 4 + 1 2 + 1 1 + 0 0,5 + 1 0,25 + 1 0,125 = 11,375 (10) Szesnastkowy system liczbowy Wykorzystywany do przedstawiania w zwartej formie długich liczb dwójkowych.
Wykład 1 1-6 W systemie szesnastkowym - podstawa P=16 - zbiór dozwolonych cyfr C={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} - wagi pozycji są kolejnymi potęgami liczby 16. L = c 0 16 0 + c 1 16 1 + c 2 16 2 +... + c n-2 16 n-2 + c n-1 16 n-1 13A (16) = 1 256 + 3 16 + A 1 = 314 (10) Ósemkowy system liczbowy P = 8 C = {0, 1, 2, 3, 4, 5, 6, 7} 1537 (8) = 1 512 + 5 64 + 3 8 + 7 1 = 863 (10) P=10 P=2 P=16 P=8 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 8 10 9 1001 9 11 10 1010 A 12 11 1011 B 13 12 1100 C 14 13 1101 D 15 14 1110 E 16 15 1111 F 17
Wykład 1 1-7 Konwersja pomiędzy systemami liczbowymi Zamiana liczby z dowolnego systemu na system dziesiętny Zamianę liczby całkowitej zawierającej n cyfr z systemu o podstawie P na system dziesiętny opisuje wzór: c n-1 c n-2... c 2 c 1 c 0 = c 0 P 0 + c 1 P 1 + c 2 P 2 +... + c n-2 P n-2 + c n-1 P n-1 y 11001101 (2) (?) (10) 1 128 + 1 64 + 0 32 + 0 16 + 1 8 + 1 4 + 0 2 + 1 1 = 205 (10) 14F (16) (?) (10) 1 256 + 4 16 + 15 1 = 335 (10) 156 (8) (?) (10) 1 64 + 5 8 + 6 1 = 110 (10) W przedstawionym algorytmie zamiany występuje potęgowanie, które jest operacją czasochłonną przy programowej realizacji algorytmu. Więc powyŝszy wzór moŝna przedstawić zgodnie z algorytmem Hornera w postaci: c n-1 c n-2... c 2 c 1 c 0 = c 0 P 0 + c 1 P 1 + c 2 P 2 +... + c n-2 P n-2 + c n-1 P n-1 = = c 0 + P(c 1 +P( c 2 2 +... + P(c n-3 + P(c n-2 + Pc n-1 ))...)) Algorytm zamiany liczby (np. 4-cyfrowej c 3 c 2 c 1 c 0 (P) L (10) ) moŝna przedstawić następująco: L (10) = c 3 L (10) = c 2 + L (10) P L (10) = c 2 + c 3 P L (10) = c 1 + L (10) P L (10) = c 1 + c 2 P + c 3 P 2 L (10) = c 0 + L (10) P L (10) = c 0 + c 1 P + c 2 P 2 + c 3 P 3 156 (8) (?) (10) L (10) = c 2 = 1 L (10) = c 1 + L (10) P = 5 + 1 8 = 13 L (10) = c 0 + L (10) P = 6 + 13 8 = 110
Wykład 1 1-8 Zamiana liczb stałoprzecinkowych zawierających część ułamkową wykonuje się podobnie jak dla liczby całkowitej 110011,101 (2) (?) (10) 1 32 + 1 16 + 0 8 + 0 4 + 1 2 + 1 1 + 1 0,5 + 0 0,25 + 1 0,125=51,625 Zgodnie z algorytmem Hornera zamiana wykonuje się tak samo, jak dla liczb całkowitych uwzględniając część całkowitą i ułamkową, po czym wynik końcowy mnoŝy się przez wagę najmłodszej cyfry: 110011,101 (2) (?) (10) L (10) = c 5 = 1 L (10) = c 4 + L (10) P = 1 + 1 2 = 3 L (10) = c 3 + L (10) P = 0 + 3 2 = 6 L (10) = c 2 + L (10) P = 0 + 6 2 = 12 L (10) = c 1 + L (10) P = 1 + 12 2 = 25 L (10) = c 0 + L (10) P = 1 + 25 2 = 51 L (10) = c -1 + L (10) P = 1 + 51 2 = 103 L (10) = c -2 + L (10) P = 0 + 103 2 = 206 L (10) = c- 3 + L (10) P = 1 + 206 2 = 413 L (10) = 413 0,125 = 51,625 Zamiana liczby z systemu dziesiętnego na dowolny inny Algorytm zamiany liczby całkowitej: - Wykonujemy dzielenie całkowite liczby L (10) przez podstawę P nowego systemu, w wyniku otrzymujemy nową liczbę dziesiętną oraz resztę z dzielenia - Otrzymana reszta jest wartością ostatniej cyfry liczby w nowym systemie liczbowym - Nową liczbę dziesiętną ponownie dzielimy przez P, otrzymując kolejną cyfrę - Dzielenie powtarzamy do momentu, aŝ po wykonaniu operacji, kolejna liczba dziesiętna będzie miała wartość 0. y 147 (10) (?) (2) 147:2=73 c 0 = 1 73:2=36 c 1 = 1
Wykład 1 1-9 36:2=18 c 2 = 0 18:2=9 c 3 = 0 9:2=4 c 4 = 1 4:2=2 c 5 = 0 2:2=1 c 6 = 0 1:2=0 c 7 = 1 147 (10) = 10010011 (2) 349 (10) (?) (16) 349:16=21 c 0 = 13 (10) = D (16) 21:16=1 c 1 = 5 1:16=0 c 2 = 1 349 (10) 15D (16) 542 (10) (?) (8) 542:8=67 c 0 = 6 67:8=8 c 1 = 3 8:8=1 c 2 = 0 1:8=0 c 3 = 1 542 (10) 1036 (8) Algorytm zamiany części ułamkowej liczby: - MnoŜymy część ułamkową przez podstawę nowego systemu P - Część całkowita otrzymanej liczby stanowi pierwszą cyfrę części ułamkowej liczby w nowym systemie - Część ułamkową ponownie mnoŝymy przez podstawę P, itd. - Obliczenia kończymy, gdy po kolejnym mnoŝeniu otrzymamy zerową część ułamkową lub załoŝoną wcześniej ilość cyfr części ułamkowej y 0,41 (10) (?) (2) 0,48 2 = 0,82 c -1 = 0 0,82 2 = 1,64 c -2 = 1 0,64 2 = 1,28 c -3 = 1 0,28 2 = 0,56 c -4 = 0 0,56 2 = 1,12 c -5 = 1 0,12 2 = 0,24 c -6 = 0 0,41 (10) 0,011010 (2)
Wykład 1 1-10 0,63 (10) (?) (16) 0,63 16 = 10,08 c -1 = 10 (10) = A (16) 0,08 16 = 1,28 c -2 = 1 0,28 16 = 4,48 c -3 = 4 0,48 16 = 7,68 c -4 = 7 0,68 16 = 10,88 c -5 = 10 (10) = A (16) 0,88 16 = 14,08 c -6 = 14 (10) = E (16) 0,63 (10) 0,A147AE (16) 0,71 (10) (?) (8) 0,71 8 = 5,68 c -1 = 5 0,68 8 = 5,44 c -2 = 5 0,44 8 = 3,52 c -3 = 3 0,52 8 = 4,16 c -4 = 4 0,16 8 = 1,28 c -5 = 1 0,28 8 = 2,24 c -6 = 2 0,63 (10) 0,553412 (8) Inny praktyczny sposób zamiany liczby dziesiętnej na postać dwójkową. Polega na przedstawieniu liczby w postaci sumy potęg dwójki. Wyszukujemy najpierw największą potęgę liczby 2, która jest mniejsza od naszej liczby, odejmujemy tę potęgę od liczby i z róŝnicą postępujemy tak samo. 178 (10) = 128 + 50 = 128 + 32 + 18 = 128 + 32 + 16 + 2. Teraz juŝ łatwo zapisać liczbę w postaci dwójkowej: 10110010 Zamiana systemów liczbowych o podstawach 2 n 2 16 - Zaczynając od prawej strony dzielimy liczbę dwójkową na czterocyfrowe grupy (2 4 = 16)
Wykład 1 1-11 - Zamieniamy kaŝdą czterocyfrową grupę na cyfrę szesnastkową (0...F). 101011011100101001 10 1011 0111 0010 1001 2 B 7 2 9 16 2 - kolejne cyfry w systemie szesnastkowym zapisujemy jako cztery cyfry w systemie dwójkowym - otrzymane czterocyfrowe grupy łączymy w jedną liczbę binarną 3A7D1E 3 A 7 D 1 E 0011 1010 0111 1101 0001 1110 2 8 Przy zamianie liczby z systemu dwójkowego na ósemkowy dzielimy liczbę dwójkową na trzycyfrowe grupy. 101011011100101001 101 011 011 100 101 001 5 3 3 4 5 1 8 2 Przy zamianie liczby z systemu ósemkowego na dwójkowy kolejne cyfry liczby w systemie ósemkowym zapisujemy jako trzy cyfry w systemie dwójkowym. 237257 2 3 7 2 5 7 010 011 111 010 101 111