Pobierz Architektura systemów komputerowych przeliczanie systemów - Notatki - Informatyka i więcej Notatki w PDF z Informatyka tylko na Docsity! Art ten jest dla tych wszystkich, którzy mają problemy ze zrozumieniem systemów liczbowych. Dodam jeszcze od siebie, że żaden haker, programista czy "chociażby" informatyk, nie zajedzie daleko bez niniejszej wiedzy. Powiem nawet więcej: jest to podstawa dobrego komputerowca. Bez tego nie masz co się uczyć języków programowania. Nie jest to zwykły kurs tejże wiedzy. Nie będę tu, bowiem stosował żadnych oznaczeń. Nie, dlatego, że mi się nie chcę, ale żeby było wam łatwiej wszystko zrozumieć. Zastąpię je obszernymi opisami. Skoro wszystko już jest jasne, można zaczynać. System dziesiętny Dla nas, ludzi naturalnym sposobem prezentacji liczb jest system dziesiętny. Oznacza to, że wyróżniamy dziesięć cytr. Są nimi: zero, jeden, dwa, trzy, cztery, pięć, sześć, siedem, osiem oraz dziewięć. Oznacza się je odpowiednio: 0, 1, 2, 3, 4, 5, 6, 7, 8 oraz 9. Jak widać, wliczając zero, jest ich dziesięć. Spróbujcie uświadomić sobie, że liczenie jest tylko i wyłącznie ILOŚCIĄ, a nie zapisem liczb. Zapis dziesiętny powstał wieki temu, prawdopodobnie, dlatego, że mamy dziesięć palców. Jednakże, nie będziemy teraz się zajmować historią. Przejdźmy zatem do bardziej konkretnych rzeczy. Umiemy już policzyć do dziecięciu, wliczając liczbę zero. Natomiast co się stanie, gdy będziemy mieli do policzenia jakąś większą ilość? Otóż, przeskakujemy automatycznie, na następną pozycję, a cyfry zwiększmy tylko na pozycji wysuniętej najbardziej w prawo. Właśnie ta najbardziej w prawo wysunięta pozycja jest najsłabsza, a najbardziej w lewo - najmocniejsza. Tym sposobem znowu zwiększamy cyfry, aż uzyskamy dziewięć. Następna liczba, przesunie cyfrę, która znajduje się o jedną pozycję w lewo. Natomiast gdy już nawet dziewiątka będzie na najbardziej w lewo wysuniętej pozycji, dodajemy nową pozycję. Cykl zaczyna się ponownie i tak w nieskończoność. Może wydać się wam to trochę skomplikowane, ale sobie to wyjaśnimy na przykładzie. Weźmy na przykład liczbę 274, czyli dwieście siedemdziesiąt cztery. Na najsłabszej pozycji widnieje cyfra 4. Pozycja ta nosi nazwę pozycji jedności, jeśli pamiętacie ze szkoły podstawowej. Mamy zatem 4 jedności. Na drugiej pozycji jest cyfra 7. Cyfra ta znajduje się na drugiej pozycji, czyli pozycji dziesiątek. Można więc powiedzieć, że jest tam siedem dziesiątek, inaczej mówiąc 70 jedności. Na trzeciej natomiast pozycji jest cyfra 2. Trzecia pozycja to pozycja setek, czyli mam dwie setki. Innymi słowy, liczba 274 to dwie setki, siedem dziesiątek i 4 jedności. Można to zapisać następująco: 4*1 + 7*10 + 2*100. Po dokonaniu tegoż działania, wyjdzie 274. Czas, aby się temu działaniu przyjrzeć. Jak widać, każdy kolejny składnik zawiera cyfrę z powyższej liczby oraz ciągle zwiększający mnożnik. Mnożnik ten najpierw jest równy 1, potem 10, a na końcu 100. Znaczy to, że każdy następny jest pomnożony przez 10. Można więc docsity.com zapisać to jeszcze inaczej. Liczba 274 to tak jak: 4*100 + 7*101 + 2*102. Jak widzimy, mnożnik to liczba 10 z ciągle zwiększającą się potęgą. Ta informacja przyda się w następnych działach omawiających przeliczanie z jednego systemu na drugi. Zwróćmy uwagę teraz na rzecz, która chociaż trochę uzmysłowi wam, jak działa system dziesiętny. Gdybyśmy chcieli zwiększyć o 1 liczbę 347, to zawsze, automatycznie zwiększmy cyfrę, która znajduję się na pozycji wysuniętej najdalej w prawo. Powstanie zatem 348. Natomiast, gdy chcemy zwiększyć o 1 liczbę 429, widzimy, że nie można już nic do 9-tki dodać, gdyż nie ma już wyższej cyfry. Co wtedy robimy? - każdy wie. Zwiększamy o jeden wartość cyfry znajdującej się na pozycji z lewej strony, natomiast wartość jedności zerujemy (dajemy najniższą możliwą wartość). Powstaje zatem 430. Jezeli natomiast chcielibyśmy zwiększyć wartość o 1 liczby 999, to widać, że : nie można zwiększyć jedności, nie można zwiększyć dziesiątek i nie można zwiększyć setek. Dodajemy zatem następną pozycję. Powstanie więc 1000. Mam nadzieję, że w powyższym akapicie wyjaśniłem wam jak działa ten przeklęty system dziesiętny i możemy już przystąpić do bardziej spektakularnych operacji. Jeśli nie zrozumiałeś nic z powyższego tekstu, wracaj do początku i zacznij jeszcze raz, gdyż nic tu po tobie. Natomiast, w sytuacji, gdy wszystko rozumiesz - zapraszam do następnego akapitu. System ósemkowy Skoro powstał system dziesiętny, można wymyślać dowolne systemy liczenia (na przykład czwórkowy itd.). Właśnie jednym z takich systemów jest system ósemkowy. Początkowo był on trochę stosowany, obecnie jednak jego zastosowanie jest znikome. Posłuży nam on jako dobry przykład. Jak się pewnie domyślacie, w systemie tym jest osiem cyfr. Wcale się nie mylicie. Są to: 0, 1, 2, 3, 4, 5, 6 oraz 7. Jest ich, więc 8, stąd nazwa. Działa on na tej samej zasadzie, co system dziesiętny. To znaczy, że gdy już jakaś cyfra jest na maksymalnej wartości, zwiększamy cyfrę na następnej pozycji. Wyjaśni to się na przykładzie. Przekształcajmy kolejne liczby i zobaczmy, jakie są różnice. Liczba zero (0) tak samo wygląda w obu systemach. Tak samo ma się sytuacja z jedynką (1), dwójką (2), trójką (3) itd. Sytuacja staje się skomplikowana, gdy dojedziemy do siódemki (7). Liczba 7 wygląda tak samo w obu systemach. Jednak nadchodzi następna liczba, zwana przez nas jako osiem. System ósemkowy nie zna takiej cyfry, więc powstaje następna pozycja. Zatem liczba osiem (8) w systemie dziesiętnym to liczba dziesięć (10) w systemie ósemkowym. Była to bardzo ważna konwersja i dobrze by było, gdybyś ją zrozumiał. Liczby takie jak: 6, 7, 8, 9, 10, w systemie ósemkowym będą wyglądać odpowiednio: 6, 7, 10, 11, 12. docsity.com liczby, ale bez reszty. Taki proces trwa, aż zostanie 0 (zero). Otrzymane zera i jedynki zapisujemy w odwrotnej kolejności. Wyjaśni się to wszystko na konkretnym przykładzie. Zatem do dzieła: 67 :2 | 1 33 :2 | 1 16 :2 | 0 8 :2 | 0 4 :2 | 0 2 :2 | 0 1 :2 | 1 Co daje 1000011. Jak widzimy, wynik zgadza się. Widać również, że zawsze na samym końcu po podzieleniu będzie 0, zatem ostatnia liczba jest równa 1. Jeden podzielić na dwa zawsze wyjdzie 0,5 zatem wynik z resztą. Co za tym idzie - pierwsza cyfra w zapisie dwójkowym jest ZAWSZE RÓWNA 1. Nie tylko matematycznie można to udowodnić. W elektronice, również musi być taka postać rzeczy. Przyjęliśmy bowiem, że dla komputera brak przepływu prądu oznacza "0", natomiast przepływ prądu - "1". Sygnał zatem nie może zaczynać się od "0", gdyż jest to brak sygnału. Procesor nie wie, czy sygnał już się zaczął, czy jeszcze nie. Początek musi być "1" (jest sygnał). System szesnastkowy czyli heksadecymalny Póki co znasz już 3 systemy liczbowe: dziesiętny, ósemkowy i dwójkowy. Wszystkie one działają analogicznie tak samo, zmienia się tylko podstawa, czyli ilość cyfr. Teraz zajmiemy się nieco systemem szesnastkowym inaczej zwanym heksadecymalnym. Jest on dość szeroko stosowany w dzisiejszej informatyce, zatem należało by go rozumieć. Jak się zapewne domyślasz, podstawą tego systemu jest 16. Musi istnieć więc szesnaście cyfr. Pierwsze dziesięć już znasz. Są nimi odpowiednio: 0, 1, 2, 3, 4, 5, 6, 7, 8 oraz 9. W naszym systemie, kolejną liczbą jest 10, natomiast w systemie szesnastkowym jest ono reprezentowane przez A. Kolejne liczby to: 11 - B, 12 - C, 13 - D, 14 - E, 15 - F. Zatem, np. liczby w systemie dziesiętnym: 2, 6, 9, 11, 14, w systemie szesnastkowym wyglądają odpowiednio: 2, 6, 9, B, E. Widać od razu, że duże liczby zajmują w systemie szesnastkowym mało miejsca. Dlatego właśnie jest on tak przydatny. Konwersja liczby szesnastkowej na dziesiętną docsity.com Konwersja ta odbywa się podobnie jak w przypadku liczb binarnych, z tym, że podstawą jest nie 2 a 16. Weźmy dowolnie wymyśloną liczbę w zapisie szesnastkowym, na przykład AB12 (co czytamy: a b jeden dwa). Bierzemy cyfrę wysuniętą najbardziej w prawo i postępujemy tak samo jak w przypadku liczb dwójkowych, ale zamiast mnożnika 2 mamy 16. Zatem jest to: 2*160 + 1*161 + 11*162 + 10*163 , a więc jest to 2 + 16 + 2816 + 40960, a więc jest to liczba 43794 w zapisie dziesiętnym. Konwersja liczby dziesiętnej na szesnastkowy No to warto by było teraz z powrotem odwrócić liczbę 43794 w zapisie dziesiętnym na AB12 w szesnastkowym. Jeżeli wiemy jak to się robi - nie ma problemu. Zatem zaczynajmy. Najpierw musimy sobie napisać jakie są kolejne wielokrotności liczby 16. A są to: 1, 16, 256, 4096, 65536 itd. Jak widać nasza liczba w systemie dziesiętnym, czyli 43794 jest między liczbą 4096, a 65536. Bierzemy pod uwagę liczbę mniejszą od naszej, czyli 4096. Jest ona czwartą wielokrotnością, więc nasza liczba w systemie szesnastkowym będzie miała 4 cyfry (na razie wszystko się zgadza). Teraz sprawdzam, ile razy liczba 4096 mieści się w naszej liczbie konwertowanej, czyli 43794. Okazuje się, że mieści się 10 razy. 10 w systemie szesnastkowym to A, zatem pierwsza cyfra to A. Jak widać, w dalszym ciągu wszystko się zgadza. Teraz, skoro liczba 4096 zmieściła się dziesięć razy w 43794, to jeszcze zapewne została jakaś reszta. Obliczamy sobie tą resztę. Mnożymy zatem 4096*10 co daje 40960. Teraz odejmujemy wynik od naszej liczby i obliczamy resztę. Zatem 43794 - 40960 = 2834. To jest nasza reszta. Następnie z resztą postępujemy tak samo, jak na początku konwersji. Już na oko widać, że w następnym kroku sprawdzamy ile razy 256 mieści się w 2834. Mieści się 11 razy, zatem kolejna cyfra szukanego zapisu to B. Następnie znowu: obliczamy resztę, itd. Końcowy wynik powinien wynosić AB12. Tak oto skonwertowaliśmy liczbę z zapisu dziesiętnego na szesnastkowy. Konwersja liczby dwójkowej na szesnastkowy I wydawać się może, że wkraczamy w coraz to bardziej zaawansowane progi � ale od razu mówię, że nie. Konwersja ta jest bardzo prosta i wcale nie wymaga skomplikowanych obliczeń. Najpierw zróbmy małą sztuczkę. Zobaczcie, jaka jest maksymalna liczba w zapisie dwójkowym składająca się z 4 bitów. Jeżeli liczba ma być maksymalna, wszystkie jej cyfry muszą mieć maksymalne wartości. Ma ona zatem postać: 1111. Po przeliczeniu, otrzymamy 15 w zapisie dziesiętnym. Jak pewnie zauważyliście, 15 jest to maksymalna docsity.com cyfra w zapisie szesnastkowym, czyli F. Daje to trochę do myślenia, ale najważniejszy jest jeden fakt: każda liczba składająca się z czterech cyfr w zapisie dwójkowym da się zapisać jako jedna cyfra w zapisie szesnastkowym. Może to zabrzmiało groźnie, ale niedługo powinno się wytłumaczyć. Zatem, kolejne liczby w zapisie dwójkowym i szesnastkowym to: Zapis dwójkowy: Zapis szesnastkowy: 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F Weźmy dla przykładu wcześniej już wspomnianą liczbę 67 w systemie dziesiętnym. Przekształciliśmy ją na 1000011 w zapisie dwójkowym. Jak teraz z tego otrzymać zapis szesnastkowy? Otóż bardzo prosto. Dzielimy kod binarny na czterocyfrowe grupy od prawej strony zaczynając. Jeżeli z lewej strony nie będzie czterech cyfr - dopisujemy z przodu zera. Zatem, otrzymamy dwie grupy. Są to: 0100 oraz 0011. Teraz wystarczy zamienić je na odpowiednie cyfry z zapisu szesnastkowego (można się posłużyć powyższą tabelą). W efekcie otrzymamy: 43 w zapisie szesnastkowym. Warto by było jeszcze sprawdzić czy wynik się zgadza konwertując zapis szesnastkowy na dziesiętny. Zatem jest to: 3*160 + 4*161, czyli 3 + 64, czyli 67 w zapisie dziesiętnym. Jak widzimy, wszystko się zgadza. Konwersja liczby szesnastkowej na dwójkową A wykonuje ją się odwrotnie jak dwójkową na szesnastkową. Po prostu kolejne cyfry w zapisie szesnastkowym zapisujesz jako cztery cyfry w zapisie docsity.com