menu

darmowe eBooki

C++ dla początkujących

okładka

Jak szybko i przyjemnie nauczyć się podstaw C++?

Przekonaj się sam czytając recenzję eBooka C++ dla początkujących.

Google Adsense

migawka z forum

Dowcipy o programistach/informatykach

Witam, grunt to potrafić śmiać sie z samego siebie  ;DPrzychodzi informatyk do domu po pra...

Rysiek z "Klanu"

W związku z ogromnym poruszeniem we wszystkich mediach w naszym kraju, dotyczącym tak kultowej postaci jak Rysiek z &quo...

Propozycje zmian w serwisie Guide C++

Witam, ze względu na to że nie znalazłem podobnego tematu na forum, a mam kilka sugestii   ;) postanowiłem je ...

buttony

SDJ
vortal programistów
Vademecum sieci komputerowych
Soldiers'04 - fan klub Legii Warszawa
www.katalog.bajery.pl
katalog stron
katalog najlepszych stron
jestem w katalogu
Wszystko o C++
[zamknij]

Korzystamy z plików cookies i umożliwiamy zamieszczanie ich osobom trzecim. Pliki cookie pozwalają na poznanie twoich preferencji na podstawie zachowań w serwisie.
Uznajemy, że jeżeli kontynuujesz korzystanie z serwisu, wyrażasz na to zgodę.

jesteś w: Dodatki / Systemy liczbowe
Szkoła Hakerów - Kurs Hackingu Bez Cenzury

Systemy liczbowe

W tym rozdziale pogadamy sobie o systemach liczbowych, z których korzysta komputer. Są to rzeczy podstawowe i każdy programista powinien o nich wiedzieć. Zatem zachęcam do uważnego przeczytania tej lekcji.
My ludzie na co dzień posługujemy się systemem dziesiętnym. W skrócie dec. Składa się on z dziesięciu cyfr numerowanych kolejno od zera włącznie. Odpowiednie kombinacji tych cyfr stanowią określone liczby. To takie małe przypomnienie. Jednak komputery to nie ludzie i także swój język mają :) Liczby zapisane w systemie dziesiętnym są dla komputera zupełnie niezrozumiałe. Dlatego też należy pójść na kompromis. Trzeba najpierw zapisać daną liczbę w sposób zrozumiały dla komputera. Za moment omówię dwa elementarne systemy liczbowe wykorzystywane w informatyce. Pierwszy to system szesnastkowy, lub też hexdecymalny. W skrócie hex. Drugi jest bardziej bliski maszynie, gdyż operuje na poszczególnych bitach. Jest to system dwójkowy lub binarny. Skrótowo bin.

system dwójkowy

System binarny operuje jedynie na dwóch cyfrach. Są to: zero i jeden. Stosując rozmaite kombinacje tych cyfr można uzyskać dowolną liczbę. Aby liczbę zapisaną dziesiętnie skonwertować na system binarny trzeba rozbić ją na ciąg zer i jedynek. Najwygodniej jest narysować sobie małą tabelkę, i postępować w odpowiedni sposób:

1286432168421

Weźmy liczbę 131. Teraz spójrz na tabelkę i zastanów się, czy pierwsza liczba z tabeli [idąc od lewej] mieści się w 131? Konkretnie, czy 128 mieście się w 131? Jak widać jest to prawdą. Tak więc w tabelce pod liczbą 128 piszemy sobie cyfrę 1. Po odjęciu od 131 liczby 128 otrzymamy liczbę 3. Teraz należy postępować podobnie z kolejnymi liczbami w tabeli. Sprawdzamy, czy kolejna liczba z tabeli [64] mieści się w liczbie 3. Nie, więc piszemy pod liczbą 64 cyfrę 0. Analogicznie postępujemy z liczbami: 32, 16, 8 i 4. Wszędzie tam stawiamy zera. Teraz kolej na liczbę 2. Ona bez problemu mieści się w liczbie 3, więc piszemy 1. Różnica liczb: 3 i 2, to 1. Zatem trzeba jeszcze postawić cyfrę 1 pod liczbą 1. Cała liczba w postaci binarnej przedstawia się następująco:

1286432168421
10000011

Przekonajmy się teraz, czy aby nie popełniliśmy błędu. Popatrz na tabelkę. Idąc od lewej tuż pod liczbą 128 mamy cyfrę 1. Następnie jest pięć zer i dwie jedynki. Pierwsza znajduje się pod liczbą 2, a druga pod liczbą 1. Sumujmy wszystko otrzymamy: 128 + 2 + 1, czyli 131. Oznacza to, że nie popełniliśmy błędu. Oczywiście podczas przeliczania należy pamiętać, aby tabelka była odpowiednio duża. Nasza wystarczy dla liczb nie większych, niż 255. Jeżeli chcesz skonwertować liczbę większą musisz posłużyć się następującą tabelą:

32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1

system szesnastkowy

System szesnastkowy jak już sama nazwa sugeruje składa się z 16 cyfr. Pierwsze dziesięć cyfr jest numerowanych od zera. Pozostałe sześć to litery alfabetu począwszy od A do F włącznie. Zatem każda liczba zapisana szesnastkowo może składać się z ciągu cyfr i liter. Przeliczanie liczb na system szesnastkowy jest dość proste. Podobnie, jak poprzednio tutaj również przyda się mała tabelka. Sporządźmy więc ją:

4096256161

Weźmy sobie liczbę 1410. Aby skonwertować ją do postaci szesnastkowej trzeba wykonać kilkukrotne dzielenie. Najpierw dzielimy naszą liczbę przez pierwszą liczbę z tabeli. Jest to takie wyrażenie: 1410 / 4096. W wyniku otrzymamy liczbę 0.34. Część ułamkowa jest nieistotna, więc ją odcinamy. Tym sposobem otrzymamy zero. Tak więc wstawiamy zero pod liczbę 4096. Tak samo postępujemy z kolejnymi liczbami z tabeli. Dzielimy 1410 przez 256. Otrzymamy liczbę 5.50. Tutaj znów odrzucamy część dziesiętną. Mamy więc liczbę 5. Tę właśnie wstawiamy do tabeli pod liczbą 256. Teraz wykonujemy następujące czynności. Od naszej liczby [1410] odejmujemy wynik z dzielenia [5] pomnożony przez liczbę, przez którą dzieliliśmy [256]. Chodzi o taki zapis: 1410 - (5 * 256). Po wyliczeniu otrzymamy liczbę 130. Teraz dzielimy ją przez kolejną liczbę z tabeli. Wygląda to tak: 130 / 16. Wynikiem jest liczba 8.125. Tutaj także pomijamy ułamek. Otrzymaną liczbę 8 wpisujemy do tabeli pod liczbą 16. Mnożymy wynik z dzielenia [8] przez liczbę z tabeli [16] i całość odejmujemy od naszej liczby [teraz jest to 130]. Mamy więc zapis: 130 - (8 * 16). Po obliczeniu otrzymamy 2. Tę właśnie liczbę wstawiamy pod kolejną i ostatnią liczbą w tabeli. Ostatecznie liczba 1410 w postaci szesnastkowej wygląda tak:

4096256161
0582

Dla pewności sprawdźmy, czy wszystko się zgadza. Tym razem zaczynamy od prawej. Mnożymy kolejno każdą z kolumn i sumujemy wyniki. W pierwszej kolumnie pod jedynką jest liczba 2. Mnożąc: 2 * 1 otrzymamy liczbę 2. W następnej kolumnie jest liczba 8. Mnożymy ją przez 16. Otrzymamy więc: 8 * 16, czyli 128. Kolumna następna to liczba 5. Znów mnożymy: 5 * 256. Jest to liczba 1280. Ostatnią kolumnę można pominąć. Jest tam zero tak więc nie zmieni to ostatecznego wyniku. Teraz sumujemy wszystkie liczby: 2 + 128 + 1280. Wynikiem jest liczba 1410. Zatem nie popełniliśmy żadnego błędu.
Jeżeli mimo wszystko nie bardzo rozumiesz, na czym polegają takie konwersje to zawsze możesz skorzystać z kalkulatora Windows'owskiego. Posiada on wbudowane funkcje do konwersji liczb. Wystarczy, że włączysz widok profesjonalny. Jeżeli chcesz dokonać konwersji wystarczy kliknąć na jedno z pól po lewej stronie. Pole Hex konwertuje liczbę na system szesnastkowy, pole dec to postać dziesiętna, bin to system binarny, zaś oct to system ósemkowy. O tym systemie nie mówiliśmy, gdyż jest ona mało przydatny. Jeżeli jesteś zainteresowany to powiem tylko, że działa analogicznie do systemu 16-go, z tą różnicą, że w tabelce umieszcza się wielokrotności 8, a nie 16.