Czym jest system liczbowy?

Ludzie, którzy na co dzień używają tylko systemu dziesiętnego do zapisu liczb czasem nie potrafią zrozumieć, jaka jest różnica pomiędzy systemem liczbowym a wartością liczby. System liczenia to sposób, w jaki zapisuje się liczby, a także algorytmy, dzięki którym z zapisu można odczytać wartość liczby. Poza tym system liczenia to także reguły, za pomocą, których można na liczbach zapisanych w konkretny sposób wykonywać działania. Każdy system posiada pewien zbiór znaków, dzięki którym można zapisać liczby. W systemie dziesiętnym są to cyfry od zera do 9, ale już na przykład w systemie szesnastkowym są to cyfry oraz litery od A do F.

Systemy liczenia podlegają różnym klasyfikacją. Najważniejszy podział jest na systemy pozycyjne i niepozycyjne (addytywne). Systemem niepozycyjnym jest na przykład system zapisu liczb rzymskich. Natomiast w każdym z systemów pozycyjnych wartość liczby zależy od tego, na którym miejscu stoi dana cyfra w liczbie. Na przykład cyfra 1 może oznaczać jedność lub dziesiątkę w systemie o podstawie 10.

Pomimo, że najbardziej rozpowszechnionym systemem liczenia jest system dziesiętny, to w informatyce nie stosuje się go. W zamian stosuje się systemy o podstawie, która jest potęgą dwójki, czyli dwójkowy (inaczej binarny), ósemkowy i szesnastkowy (inaczej heksadecymalny).

W dalszej części pracy przedstawię omówienie najbardziej znanych i użytecznych systemów liczenia.

System dziesiętny, czyli to co każdy umie

Chyba tylko zamierzchła historia byłaby w stanie nam powiedzieć, dlaczego najbardziej rozpowszechnionym sposobem zapisu liczb jest pozycyjny system dziesiętny. Najbardziej prawdopodobnym wyjaśnieniem tak szybkiego rozwoju tego systemu jest prosty i niezaprzeczalny fakt, że człowiek ma 10 palców. Trzeba przyznać, że jest to sposób najbardziej dla nas naturalny, z którym nie ma problemu przeciętny pierwszoklasista. W tym systemie znakami odpowiedzialnymi za zapis liczb są cyfry arabskie: 0 (zero), 1 (jeden), 2 (dwa), 3 (trzy), 4 (cztery), 5 (pięć), 6 (sześć), 7 (siedem), 8 (osiem) i 9 (dziewięć).

System dziesiętny ma tę zaletę, że wszystkie obliczenia i operacje arytmetyczne są na nim wykonywane w sposób bardzo intuicyjny. Przedstawienie nawet bardzo dużej liczby nie nastręcza trudności. System dziesiętny używany jest na co dzień i większość ludzi nie ma z nim żadnych problemów.

Dlaczego zatem nie używa się systemu dziesiętnego do komunikacji pomiędzy człowiekiem a maszyną cyfrową, jaką jest komputer? Odpowiedź jest prosta. Mimo, że system ten jest bardzo intuicyjny dla człowieka, to dla maszyny jest on po prostu za trudny. Zaprogramowanie w maszynie rozpoznawania dziesięciu różnych cyfr byłoby bardzo nieekonomiczne. Dlatego maszyny komunikują się z człowiekiem i ze sobą za pomocą systemu dużo mniej skomplikowanego, a jest nim system dwójkowy, inaczej binarny.

System dwójkowy, czyli co potrafi komputer

Może trudno w to uwierzyć, ale minimalnym zestawem znaków, jaki jest potrzebny do zapisu każdej liczby jest zestaw 0 (zero) i 1 (jeden). Często system dwójkowy określa się także nazwą "zerojedynkowy" lub "binarny" (Bi - od tego, że występują tutaj tylko dwie wartości). No dobrze, ale jak w takim razie zapisać liczbę dwa, skoro w systemie dwójkowym nie ma cyfry, która by odpowiadała takiej wartości? Analogicznie jak w systemie dziesiętnym zapisuje się liczbę dziesięć. Otóż dodaje się jedną "pozycję", na której dajemy jedynkę, a wszystkie poprzednie pozycje zerujemy. Tak samo w systemie dwójkowym: liczba o wartości dwa będzie miała zapis "10". Kolejne wartości cyfr przedstawia poniższa tabelka:

Wartość

Zapis dwójkowy

0

0

1

1

2

10

3

11

4

100

5

101

6

110

7

111

8

1000

9

1001

Kolejne liczby w systemie dwójkowym tworzy się analogicznie. Oprócz tego istnieją sposoby, jak zapisać liczbę ujemną w systemie dwójkowym bez użycia żadnego dodatkowego znaku (w systemie dziesiętnym takim dodatkowym znakiem jest "-"). Warto jeszcze wiedzieć, że pojedyncza cyfra systemu dwójkowego jest nazywana bitem i często jest utożsamiana z wartością prawdy (dla jedynki) lub fałszu (dla zera).

System ósemkowy, czyli co można zrobić z liczbą dwójkową

System ósemkowy jest chyba jeszcze bardziej egzotycznym tworem niż system dwójkowy. Teoretycznie każdy może wymyślić sobie system o dowolnej podstawie - na przykład system siódemkowy. Inna sprawa, że prawdopodobnie nie byłby użyteczny.

Natomiast używa się czasem systemu ósemkowego, dlatego, że skraca on zapis liczb dwójkowych. W systemie ósemkowym istnieje dokładnie osiem cyfr, od zera do siedem. I o ile w tym systemie dwójkę przedstawić łatwo, to kłopoty zaczynają się przy ósemce. Jak bowiem przedstawić wartość osiem, jeśli system nie posiada cyfry 8? Otóż sprawa wygląda tak samo jak w systemie dwójkowym. W systemie ósemkowym wartość osiem będzie mieć zapis "10". "17" to będzie piętnaście, zaś już liczba o wartości szesnaście przyjmie postać "20".

Cóż, wszystko pięknie, tylko jak na przykład dojrzeć w zapisie ósemkowym, "123" jaka to jest wartość? Na pewno nie będzie to bowiem sto dwadzieścia trzy. Istnieje na szczęście sposób, jak konwertować liczby w innych systemach na ich zapisy dziesiętne, dzięki czemu łatwo można odczytać wartość liczby, ponieważ zapis dziesiętny wszyscy znamy.

Algorytm (sposób postępowania) jest następujący. Jeżeli mamy liczbę zapisaną w formacie ósemkowym jako 123, dokonujemy następującej konwersji:

wartość_liczby = 1*82 + 2*81 + 3*80 = 64 + 16 + 3 =

= 83 (zapis dziesiętny)

Dokładnie tak samo można przekonwertować na zapis dziesiętny liczbę zapisaną w każdym innym systemie liczenia. Tak jak w systemie dziesiętnym kolejne pozycje (licząc od prawej) mówią, jaka jest w liczbie wielokrotność 1, 10, 100, 1000 itd., tak w systemie ósemkowym kolejne "podstawy" będą mieć wartości 80=1, 81=8, 82=64, 83=512, 84=4096 i tak dalej.

Jak było wspomniane, system ósemkowy jest stosowany jako skrót zapisu liczb w systemie binarnym. Rzeczywiście, jeśli weźmiemy liczbę binarną, na przykład 111110001, to wystarczy pogrupować jej cyfry po trzy: 111 110 001 i każdą z tych trójek zapisać jako cyfrę (od 0 do 7). Tym sposobem otrzymujemy skrócony zapis tej samej liczby: 761.

System szesnastkowy, czyli co zrobić, gdy brakuje cyfr

Do tej pory mówiliśmy o systemach, w których problemem było przedstawienie cyfr większych od podstawy systemu (jak zapisać dwójkę w systemie, który ma tylko dwie cyfry: 0 i 1?). W systemie szesnastkowym problem się odwraca - jak w jednym znaku zapisać liczbę o wartości dziesięć, czy piętnaście? Dlatego system szesnastkowy, inaczej heksadecymalny, używa oprócz dziesięciu cyfr także znaków: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15.

Również ten system wykorzystywany jest jako sposób skracania liczb dwójkowych. Weźmy liczbę 11100010. Wystarczy pogrupować jej cyfry po cztery: 1110 0010 i zapisać każdą z tych czwórek za pomocą cyfr systemu heksadecymalnego. W tym wypadku będzie to 0E2h. Wyjaśnienia wymagają zero na początku i h na końcu zapisu. Przyjęło się stawiać zero na początku liczby szesnastkowej, o ile jej pierwszą cyfrą jest litera. Natomiast literka h na końcu oznacza, że liczba zapisana jest w systemie heksadecymalnym.

Jeśli chodzi o zastosowania systemu szesnastkowego, to należy wspomnieć o tym, że w tym systemie są kodowane adresy w pamięci operacyjnej, a także często liczby określające kolory.