Systemy liczbowe

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:

sys dwojkowy2Zauważ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:

konwersja sys dwojkowyliczba 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:

sys szesnastkowy1Konwersja (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:

konwersja16a2.  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

konwersja16b2257 / 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

konwersja16c209 / 16 ≈ 13,06

Liczba dziesiętna 13 w systemie szesnastkowym to D.

209 – 13 x 16 = 209 – 208 = 1

konwersja16d1 / 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:

sys dwojk a szesnastPrzekształ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ą):

sys dwojk a szesnast2liczba 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ą): sys dwojk a szesnast1liczba 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:

sys dwojk a szesnast3liczba 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.

Dodaj komentarz