Ćwiczenie nr 1: Systemy liczbowe Barbara Łukawska, Adam Krechowicz, Tomasz Michno Podstawowym systemem liczbowym uŝywanym na co dzień jest system dziesiętny. Podstawą tego systemu jest 10 cyfr 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. Dowolna liczba zapisana w systemie dziesiętnym np. 1234 interpretowana jest przez kolejne cyfry, które oznaczają: jeden tysiąc dwieście trzydzieści cztery Liczba ta moŝe zatem zostać zapisana jako: 1 * 1000 + 2 * 100 + 3 * 10 + 4 * 1 lub sprowadzając do wspólnego mnoŝnika (znak ^ oznacza potęgowanie): 1* 10^3 + 2 * 10^2 + 3 * 10^1 + 1 * 10^0 widać stąd jasno, Ŝe kolejne cyfry posiadają odpowiednie wagi w zaleŝności od tego na której pozycji się znajdują. Wagi kolejnych cyfr wzrastają o 10 przesuwając się w lewą stronę. Inaczej moŝna powiedzieć Ŝe wagi są kolejnymi potęgami liczby 10 (stąd nazwa systemu liczbowego). Pierwsza cyfra ma wagę 1, czyli 10^0 Druga cyfra ma wagę 10, czyli 10^1 Trzecia cyfra ma wagę 100, czyli 10^2 itd. System dziesiętny jest najbardziej wygodny do liczenia dla ludzi. Spowodowane jest to nauką liczenia na 10 palcach. Jednak nie jest to jedyny system liczbowy wykorzystywany w informatyce. Do szczególnych zadań wykorzystywane są systemy: 1. binarny (dwójkowy) 2. ósemkowy 3. szesnastkowy System binarny (inaczej nazywany dwójkowym) zakłada istnienie tylko dwóch cyfr: 0 1
System ten leŝy u podstaw komputerów ze względu na prosty fakt interpretacji tego systemu w układach elektronicznych. Cyfra 1 oznacza, Ŝe prąd płynie natomiast cyfra 0, Ŝe prąd nie płynie. Pomimo, Ŝe system ten ma o wiele mniej cyfr pozwala na zapisanie dowolnej liczby. Np. liczba w systemie binarnym b110101 (w celu odróŝnienia od systemu dziesiętnego często liczbę binarną poprzedza się znakiem b) odpowiada dziesiętnej liczbie 53. Przeliczenia moŝna dokonać podobnie jak zostało to pokazane na przykładzie liczb dziesiętnych. Jedyna róŝnica polega na tym, Ŝe w tym przypadku zamiast kolejnych potęg liczby 10 uŝywamy potęg cyfry 2: 1 * 2^5 + 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2 ^0 po obliczeniu potęg otrzymujemy wagi, przez które naleŝy mnoŝyć kolejne cyfry: 1 * 32 + 1 * 16 + 0 * 8 + 1 * 4 + 0 * 2 + 1 * 1 co po obliczeniu daje wartość: 53. Znajomość kolejnych potęg liczby 2 jest bardzo waŝne i wykorzystywane w wielu calach w informatyce: 2 ^ 0 = 1 2 ^ 1 = 2 2 ^ 2 = 4 2 ^ 3 = 8 2 ^ 4 = 16 2 ^ 5 = 32 2 ^ 6 = 64 2 ^ 7 = 128 2 ^ 8 = 256 2 ^ 9 = 512 2 ^ 10 = 1024 W równie łatwy sposób moŝna otrzymać liczbę binarną na podstawie liczby zapisanej w postaci dziesiętnej. W tym celu naleŝy wykonywać kolejne dzielenie liczby dziesiętnej przez 2 zapisując reszty z dzielenia. Dla przykładu chcąc zamienić liczbę 53 na postać binarną naleŝy podzielić ją przez 2: 53 / 2 = 26 reszta 1
otrzymany wynik dzielenia wykorzystujemy w drugim kroku dzielenia: 26 / 2 = 13 reszta 0 w ten sposób wykonujemy kolejne dzielenia: 13 / 2 = 6 reszta 1 6 / 2 = 3 reszta 0 3 / 2 = 1 reszta 1 1 / 2 = 0 reszta 1 Dzielenie kończymy po dojściu do zera. Zapisując otrzymane reszty w kolejności odwrotnej do liczenia otrzymujemy 110101 co odpowiada liczbie 53 z poprzedniego przykładu. Równie uŝytecznym systemem jest system ósemkowy. Analogicznie wykorzystuje on osiem cyfr 0, 1, 2, 3, 4, 5, 6, 7. Przeliczanie wartości ósemkowych na dziesiętne odbywa się identycznie jak dla liczb binarnych. RóŜnica polega tylko na wykorzystaniu innych wag. Chcąc przeliczyć ósemkową liczbę 0731 (w celu odróŝnienia często poprzedza się cyfry ósemkowe zerem) na mnoŝymy kolejne cyfry przez odpowiednie potęgi cyfry 8: 7 * 8^2 + 3 * 8 ^ 1 + 1 * 8^0 po obliczeniu potęg otrzymujemy: 7 * 64 + 3 * 8 + 1 * 1 co po przeprowadzeniu prostych obliczeń wynosi 448 + 24 + 1 stąd otrzymujemy, Ŝe zadana liczba w systemie dziesiętnym ma wartość 473. Chcąc zamienić dziesiętną liczbę na odpowiadającą jej wartość w systemie ósemkowym dzielimy ją przez 8: 473 / 8 = 59 reszta 1 59 / 8 = 7 reszta 3 7 / 8 = 0 reszta 7 Zapisując cyfry w odwrotnej kolejności otrzymujemy wartość liczby w systemie ósemkowym czyli 731. Wygodnym systemem do zapisu duŝych liczb jest system szesnastkowy. System ten zakłada istnienie 16 cyfr. Do typowych cyfr systemu dziesiętnego dołączonych jest jeszcze 6 pierwszych liter alfabetu. Z tego wynika, Ŝe system szesnastkowy składa się z cyfr 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Dodatkowe liczby odpowiadają kolejnym liczbom dziesiętnym:
A = 10 B = 11 C = 12 D = 13 E = 14 F = 15 Przeliczanie liczb szesnastkowych na postać dziesiętną wygląda podobnie do przeliczania z innych systemów. Chcąc przeliczyć liczbę 0xA3F (liczby szesnastkowe często poprzedza się znakami 0x) wykonujemy analogiczne operacje jak w przypadku innych systemów, ale teraz wykorzystujemy potęgi liczby 16. A * 16^2 + 3 * 16^1 + F * 16^0 po podstawieniu odpowiednich liczb pod cyfry A i F otrzymujemy: 10 * 16^2 + 3 * 16^1 + 15 * 16^0 co po wykonaniu potęgowania opowiada: 10 * 256 + 3 * 16 + 15 * 1 po uproszczeniu otrzymujemy: 2560 + 48 + 15 po sumowaniu otrzymujemy wynik 2623. W analogiczny sposób przeliczamy liczbę szesnastkową na postać dziesiętną dzieląc kolejno przez 16. 2623 / 16 = 163 reszta 15 163 / 16 = 10 reszta 3 10 / 16 = 0 reszta 10 Zapisując w odwrotnej kolejności reszty otrzymujemy 10, 3, 15. Natomiast po zamienieniu liczb większych niŝ 9 odpowiednich cyfr otrzymujemy A3F. Zadania: 1. Przeliczyć liczby binarne na liczby dziesiętne: a) 1001 b) 1110 c) 1010 d) 0111
2. Przeliczyć liczby dziesiętne na binarne a) 21 b) 37 c) 125 d) 133 3. Zamienić liczby dziesiętne na ósemkowe i dokonać sprawdzenia wykonując zamianę liczby ósemkowej na dziesiętną. a) 876 b) 445 c) 584 d) 645 4. Zamienić liczby szesnastkowe na dziesiętne i dokonać sprawdzenia wykonując zamianę liczby dziesiętnej na szesnastkową a) 0xFFF b) 0x14 c) 0xABC d) 0x1F4