Zgodnie z definicją system liczbowy jest jedynie zbiorem reguł odnoszących się do zapisu i nazewnictwa liczb. Innymi słowy ta sama liczba, mimo że będzie oznaczać tą samą ilość czegoś w zależności od przyjętego systemu liczbowego może mieć różny zapis i nazwę.
np. liczba 235 w systemie dziesiętnym odpowiada liczbie 11101011 w systemie dwójkowym oraz liczbie EB w systemie szesnastkowym
SYSTEM DZIESIĘTNY
Jest to system liczbowy którym posługujemy się na co dzień. Opiera się on na dziesięciu cyfrach: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Z tych cyfr możemy zbudować każdą liczbę. Zasada jest prosta: po cyfrze 9 występuje liczba 10, którą tworzymy poprzez zastąpienie cyfry 9 cyfrą 0 i postawienie przed nią jedynki. To samo dzieje się gdy dojdziemy do liczby 19. Następna w kolejności jest liczba 20 utworzona poprzez zastąpienie 9 cyfrą 0, a jedynki cyfrą 2.
Jako przykład weźmy liczbę 235. Przyjrzyjmy się jej: cyfra 2 to cyfra setek, cyfra 3 to cyfra dziesiątek, a cyfra 5 to cyfra jedności. Wobec powyższego liczbę 235 możemy zapisać jako:
200 + 30 + 5
czyli 2 x 100 + 3 x 10 + 5 x 1
czyli 2 x 102 + 3 x 101 + 5 x 100
SYSTEM DWÓJKOWY (BINARNY)
Omówiliśmy już algebrę Bool’a, która operuje zmiennymi o wartościach 0 i 1, jak również układy logiczne (lekcja 12, 13 i 14), które obecność określonego sygnału odczytywały jako 1, a jego brak jako 0. W związku z powyższym na pewno rozumiecie dlaczego komputery, których procesory są zbudowane z licznych układów logicznych posługują się systemem dwójkowym.
System dwójkowy opiera się jedynie na dwóch cyfrach: 0 i 1.
Z tych cyfr możemy zbudować każdą inną liczbę. Po cyfrze 0 i 1 występuje liczba 10 (odpowiadająca liczbie 2 w systemie dziesiętnym) – jako że w systemie dwójkowym nie ma większej cyfry od 1 zastępujemy ją cyfrą 0 i dodajemy przed nią cyfrę 1 (w analogiczny sposób powstała liczba 10 w systemie dziesiętnym) w ten sposób otrzymujemy cyfrę 10 rozumianą jako zestawienie cyfry jeden i cyfry zero.
Następne cyfry dziesiętne: 3, 4 w systemie dwójkowym zapisujemy jako 11, 100. Abyście łatwiej mogli wychwycić regułę zapisu liczb w systemie dwójkowym przyjrzyjcie się poniższej tabeli:
Zauważcie, że tak w systemie dziesiętnym jak i dwójkowym nie ma liczb zaczynających się od „0”!
Konwersja (przekształcenie) liczby dwójkowej na dziesiętną:
Jako przykład posłuży nam liczba dwójkowa 11101011. Każdą z cyfr mnożymy przez malejącą potęgę liczby 2:
11101011
1 x 27 + 1 x 26 + 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 + 1 x 21 + 2 x 20
128 + 64 + 32 + 0 + 8 + 0 + 2 + 1 = 235
liczba dwójkowa: 11101011 = liczba dziesiętna 235
Konwersja liczby dziesiętnej na dwójkową:
Ponownie przekształćmy liczbę dziesiętną 235 na liczbę dwójkową. W tym celu należy podzielić ją przez 2 – jeśli wynik wyjdzie z resztą po przecinku na marginesie zapisujemy cyfrę 1, a jeśli wynik będzie liczbą całkowitą (bez reszty) wtedy zapisujemy 0. Następnym etapem jest podzielenie wyniku poprzedniego dzielenia (pomijając to co uzyskaliśmy po przecinku) przez 2 i ponowne zapisanie 0 lub 1 na marginesie. Otrzymany ciąg zero-jedynkowy odczytujemy od dołu do góry:
liczba dziesiętna 235 = liczba dwójkowa 11101011
SYSTEM SZESNASTKOWY (HEKSADECYMALNY)
Jest to system liczbowy którego zaletą jest przede wszystkim zapis dużych liczb w sposób nie zajmujący dużo miejsca. Z tego powodu jest on powszechnie stosowany w programowaniu.
System szesnastkowy opiera się na 16 znakach: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Liczby ciągu tworzymy analogicznie jak w systemie dwójkowym:
Konwersja (przekształcenie) liczby szesnastkowej na dziesiętną:
Jako przykład posłuży nam liczba szesnastkowa A8D1. Każdą z cyfr mnożymy przez malejącą potęgę liczby 16:
A x 163 + 8 x 162 + D x 161 + 1 x 160
10 x 163 + 8 x 162 + 13 x 161 + 1 x 160 = 40960 + 2048 + 208 + 1 = 43217
Konwersja (przekształcenie) liczby dziesiętnej na szesnastkową:
Ponownie przekształćmy liczbę dziesiętną 43217 na liczbę szesnastkową. Robi się to w kilku etapach:
1. sprawdzamy między jakimi wielokrotnościami liczby 16 mieści się nasza konwertowana liczba:
2. sprawdzamy po której z kolei wielokrotności liczby 16 występuje nasza konwertowana liczba – od tego zależy ilość znaków w zapisie szesnastkowym liczby
konwertowana liczba 43217 jest większa od liczby 4096, która jest 4 wielokrotnością liczby 16, dlatego nasza liczba w systemie szesnastkowym będzie miała 4 znaki
3. sprawdzamy ile razy ta wielokrotność liczby 16 mieści się w naszej konwertowanej liczbie i ewentualnie jaka będzie reszta tego dzielenia
43217 / 4096 ≈ 10,55
43217 – 10 x 4096 = 43217 – 40960 = 2257
Liczba 4096 (będąca wielokrotnością liczby 16 bezpośrednio mniejszą od liczby konwertowanej) mieści się w liczbie 43217 dziesięć razy. W dziesiętna liczba 10 w systemie szesnastkowym to A. Pozostaje nam reszta 2257.
4. z resztą postępujemy identycznie – sprawdzamy po której wielokrotności liczby 16 występuje; sprawdzamy ile razy ta wielokrotność liczby 16 mieści się w naszej reszcie i jaka ewentualnie będzie z tego kolejna reszta
2257 / 256 ≈ 8,82
Liczba dziesiętna 8 w systemie szesnastkowym to także 8.
2257 – 8 x 256 = 2257 – 2048 = 209
5. z kolejną resztą postępujemy analogicznie
209 / 16 ≈ 13,06
Liczba dziesiętna 13 w systemie szesnastkowym to D.
209 – 13 x 16 = 209 – 208 = 1
1 / 1 = 1
Liczba dziesiętna 1 w systemie szesnastkowym to także 1.
6. wynik konwersji otrzymujemy poprzez zestawienie ze sobą liczb w systemie szesnastkowym otrzymywanych na kolejnych etapach konwersji
liczbie dziesiętnej 43217 w systemie szesnastkowym odpowiada zapis A8D1.
Konwersja (przekształcenie) liczby szesnastkowej na dwójkową:
Cztery cyfry zapisu dwójkowego odpowiadają jednej cyfrze w zapisie szesnastkowym:
Przekształcenie liczby szesnastkowej na dwójkową polegać będzie jedynie za zamianie jednej cyfry kodu szesnastkowego na 4 cyfry kodu dwójkowego (zgodnie z powyższą tabelą):
liczba szesnastkowa: EB = liczba dwójkowa 11101011
Konwersja (przekształcenie) liczby dwójkowej na szesnastkową:
Przekształcenie liczby zapisanej w systemie dwójkowym na liczbę w zapisie szesnastkowym polega na zamianie czterech kolejnych cyfr kodu dwójkowego na jedną cyfrę kodu szesnastkowego (zgodnie z powyższą tabelą):
liczba dwójkowa: 11101011 = liczba szesnastkowa EB
Uwaga! Jeśli liczba w zapisie dwójkowym będzie miała zbyt mało cyfr aby zamienić ją na liczbę w zapisie szesnastkowym wystarczy z przodu (po lewej stronie) dopisać odpowiednią ilość zer:
liczba dwójkowa 11011 = liczba szesnastkowa 1B
Oczywiście istnieją jeszcze inne systemy liczbowe, ale raczej nie będziemy ich wykorzystywać podczas programowania, dlatego nie zostały one tu przedstawione.