System dwójkowy i szesnastkowy (heksadecymalny)

Algebra Boole'a

Algebra Boole'a różni się od zwykłej algebry tym, że zmienne mogą przybierać tylko dwie wartości 0 lub 1. Operacje dodawania i mnożenia wyglądają następująco:

Dodawanie
0+0=0, 1+0=1, 0+1=1, 1+1=0
Mnożenie:
0x0=0, 0x1=1, 1x0=0, 1x1=1

Ponieważ dzisiejsze komputery są konstruowane w oparciu o układy cyfrowe pracujące według reguł dwuelementowej algebry Boole'a, stąd w informatyce szczególną wagę przywiązuje się do systemu dwójkowego. W tym punkcie omówimy dokładnie ten system, konwersję pomiędzy systemem dziesiętnym i dwójkowym oraz podstawy arytmetyki w systemie dwójkowym.

Pozycyjne systemy liczbowe

Pozycyjnymi systemami liczenia nazywa się sposoby tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Dla dowolnego systemu liczenia istnieje zbiór cyfr, z których tworzy się liczby. Systemy, w których wartość liczbowa cyfry zależy od jej umiejscowienia (pozycji) w liczbie, nazywają się systemami pozycyjnymi. Ludzie do liczenia stosują system dziesiątkowy, w komputerach - system dwójkowy. Liczbę różnych cyfr systemu nazywa się jego podstawą. Wartość liczbowa cyfry w systemie pozycyjnym określona jest przez wagę pozycji zależną od jej numeru. Zwykle stosuje się taki zapis liczb, w którym wagi cyfr wzrastają od prawej do lewej strony zbioru cyfr stanowiącego liczbę. W systemie dziesiątkowym podstawą jest 10, w dwójkowym 2. Cyfra w systemie dwójkowym nazywana jest bitem. Bit może przyjmować wartość 0 lub 1, operacje na bitach są zgodne z algebrą Boole.

I tak, w systemie dziesiątkowym zapis liczby 2186.76 jest wynikiem faktu, że:

Zapis w systemie dziesiątkowym

A w systemie dwójkowym zapis liczby 1100101.101 jest wynikiem faktu, że:

Zapis w systemie dwójkowym

Konwersja z systemu dziesiętnego na system dwójkowy

O ile zamiana z systemu dwójkowego na dziesiętny sprowadza się do dodawania i mnożenia, to algorytm odwrotny jest bardziej skomplikowany. Załóżmy, że mamy daną liczbę x w systemie dziesiętnym. Aby zapisać ją w systemie dwójkowym postępujemy według następującej procedury:

  1. Podstawiamy w:=x
  2. Dzielimy liczbę w przez 2,
  3. Jeśli wynikiem operacji dzielenia jest liczba całkowita, zapisujemy resztę 0,
  4. Jeśli wynikiem operacji dzielenia nie jest liczba całkowita, zapisujemy resztę 1,
  5. Całkowity wynik z dzielenia, po odrzuceniu ewentualnej reszty, zapisujemy jako w,
  6. Jeśli w jest różne od 0 przechodzimy z powrotem do kroku 2,
  7. Jeśli w jest równe 0 kończymy procedurę.
  8. Otrzymane w ten sposób cyfry 0 lub 1 zapisywane od prawej do lewej strony w kolejności ich otrzymywania dadzą nam oczekiwaną wartość w systemie dwójkowym.

Zilustrujmy to przykładem, załóżmy, że chcemy zapisać liczbę 758 w systemie o podstawie 2. W tym celu dzielimy wpierw liczbę 758 przez 2, a następnie postępujemy dalej według powyższej procedury.

758 | 2 x 379 + 0

tym razem dzielimy liczbę 379 przez 2 i zapisujemy poniżej poprzedniego wiersza, zatem mamy

758 | 2 x 379 + 0
379 | 2 x 189 + 1

analogicznie postępujemy dalej:

758 | 2 x 379 + 0
379 | 2 x 189 + 1
189 | 2 x 94 + 1
94 | 2 x 47 + 0
47 | 2 x 23 + 1
23 | 2 x 11 + 1
11 | 2 x 5 + 1
5 | 2 x 2 + 1
2 | 2 x 1 + 0
1 | 2 x 0 + 1

Powstała w ten sposób kolumna z prawej strony stanowi zapis liczby 758 w systemie o podstawie 2. Kolumnę tą czytając od dołu i pisząc od lewej, lub czytając od góry i pisząc od prawej, przekształcamy w ostateczną postać żądanej liczby.

Arytmetyka w systemie dwójkowym

Zobaczymy teraz sposób wykonywania podstawowych działań na liczbach zapisanych w ten sposób. Dodawanie jest realizowane podobnie jak dla systemu dziesiętnego, należy jedynie pamiętać, że w systemie dwójkowym:

1 + 1 = 10

Wynika to z faktu, iż w systemie dwójkowym nie ma cyfry reprezentującej liczbę 2, 1+1 w tym systemie daje w wyniku 0 na pewnej pozycji, a jedność jest przenoszona na następną pozycję w liczbie. Jest to podoba sytuacja jak w przypadku dodawania 1 + 9 w systemie dziesiętnym, otrzymujemy w wyniku 0, a jedność jest przenoszona na następną pozycję. Przypatrzmy się następującym działaniom:

Kod szesnastkowy

Wadą systemu dwójkowego jest rozwlekłość zapisywanych w ten sposób liczb. Dla człowieka bywa trudne zapamiętanie ciągu zer i jedynek. Stąd też często w informatyce spotykamy się z zapisem liczby w systemie szesnastkowym. Z definicji pozycyjnego systemu liczbowego wynika, że w systemie szesnastkowym musimy mieć szesnaście cyfr, ale jak sobie poradzić w sytuacji, gdy mamy do dyspozycji cyfry arabskie w zakresie od 0 do 9. Problemem ten rozwiązano poprzez nazwanie kolejnych cyfr tego systemu, poczynając od dziesięciu. I tak A oznacza właśnie 10, B oznacza 11, C oznacza 12, D oznacza 13, E oznacza 14 i wreszcie F oznacza 15. W tym całym zamęcie 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. W zapisie szesnastkowym AA oznacza liczbę 10x16 + 10 = 170. Ponieważ A to 1010 w układzie dwójkowym, zatem liczba szesnastkowa AA w układzie dwójkowym to 10101010.

Inne pozycyjne systemy liczbowe

Punkt ten należy traktować jako informację poszerzającą wiedzę ogólną, gdyż inne systemy liczbowe niż dwójkowy i szesnastkowy praktycznie nie są wykorzystywane w informatyce, lub ich obecność jest marginalna. Dla przykładu niekiedy można spotkać zapis liczby w systemie ósemkowym.

GÓRA         SZKOŁA         

©2007-2016 Łukasz Ługowski, Młodzieżowy Ośrodek Socjoterapii nr 2 „KĄT”. Wykonanie:
Licencja Creative Commons - zdjęcia, rysunki i obrazy należą do uczniów i pracowników MOSu „KĄT”; kilka przyjaciół i znajomych

Podziękowania: Uczniowie, nauczyciele & „KĄTowi” przyjaciele!