System binarny (dwójkowy) – konwersje

Matura z informatyki i system binarny to nierozerwalny duet. W tym wpisie swoją uwagę poświęcę właśnie pojęciu systemu binarnego i jego konwersji na  lepiej nam znany system dziesiętny.

Jest 10 rodzajów ludzi. Ci, którzy rozumieją system binarny i ci, którzy go nie rozumieją. 

System binarny jest najprostszym znanym systemem pozycyjnym, czyli takim, w którym pozycja liczby ma znaczenie. Do zapisu liczby w systemie binarnym używa się dwóch cyfr: zera i jedynki (stąd nazwa dwójkowy).


Już niebawem rusza kurs przygotowujący do matury z informatyki.
Nie daj się zaskoczyć na maturze – zapisz się do listy mailingowej już teraz!

System dwójkowy przyjął się szczególnie w elektronice, gdzie początkowo używany był do opisu dwóch stanów prądu: 0 — brak prądu, 1 — obecność prądu. Jako że bez prądu żadne urządzenie cyfrowe nie ma racji bytu, to system ten znalazł swoje zastosowanie w szeroko pojętej informatyce. Przykładem liczby binarnej jest 10000 (16 w systemie dziesiętnym), 1001001 (73).

Jak zamieniać liczby binarne na dziesiętne?

System dwójkowy zawdzięcza swoją nazwę nie bez powodu. Konwersja polega na dodawaniu iloczynów kolejnych potęg dwójki i odpowiadającym im cyfr z liczby binarnej. Przy zamianie liczby z systemu binarnego na dziesiętny musimy zacząć od końca liczby. Spójrzmy, dla przykładu, na liczbę 10100:

  1. Bierzemy pierwszą cyfrę od końca: 0. Potęgi dwójki zaczynamy od wykładnika 0. W takim razie 0 * 20 = 0 * 1 = 0;
  2. Bierzemy kolejną cyfrę od końca: 0. Kolejny wykładnik dwójki to 1, więc 0 * 21 = 0 * 2 = 0;
  3. Trzecia od końca jest 1. Wykładnik dwójki zaczęliśmy od zera, wykonujemy więc działanie 1 * 22 = 1 * 4 = 4;
  4. Kolejna cyfra od końca to 0: 0 * 23 = 0 * 8 = 0;
  5. Ostatnia od końca cyfra to 1. Działanie ma postać 1 * 24 = 1 * 16 = 16;
  6. Na koniec sumujemy wszystkie wyniki działań: 0 + 0 + 4 + 0 + 16 = 20. Liczba 10100 w systemie dziesiętnym ma więc wartość 20.

Ten sposób konwersji można wykorzystać właściwie w każdym systemie liczbowym. Wystarczy zamiast potęg dwójki wpisywać kolejne potęgi podstawy systemu.

Listę powyższych kroków możemy uogólnić i przedstawić na schemacie blokowym:

System binarny - konwersja

System binarny na dziesiętny —  implementacje 

W przypadku programów komputerowych konwersja ta zachodzi podobnie, jak byśmy robili to na kartce papieru. Oczywiście istnieją biblioteki pozwalające na szybką zamianę liczb, ale na maturze możemy nie mieć do nich dostępu. W związku z tym poniżej znajdziesz implementacje w C++, Javie oraz Pythonie:

C++

Java

Python



O systemie binarnym i przydatnych algorytmach przeczytasz w tym podręczniku

Jak zamieniać liczby dziesiętne na binarne?

Skoro umiemy już zamienić liczbę binarną na dziesiętną, musimy jeszcze prześledzić jak zrobić to w drugą stronę. Zamiana polega na ciągłym dzieleniu całkowitym liczby na dwa i zapisywaniu reszty z dzielenia. Następnie reszty z dzielenia wypisujemy od końca, w wyniku czego otrzymamy liczbę w systemie binarnym. Weźmy znowu pod lupę liczbę z poprzedniego przykładu: 20:

  1. Dzielimy 20 na 2, czego wynikiem jest 10. Reszta z tego dzielenia jest równa 0.
  2. Dzielimy 10 na 2, czego wynikiem jest 5. Reszta z dzielenia jest równa 0.
  3. Dzielimy 5 na 2, czego wynikiem jest 2(pamiętaj, że dzielimy całkowicie, czyli pomijamy rozwinięcie dziesiętne). Reszta z tego dzielenia jest równa 1.
  4. Dzielimy 2 przez 2, czego wynikiem jest 1. Reszta z dzielenia równa 0.
  5. Dzielimy 1 przez 2: wynik równy 0. Reszta z dzielenia: 1.
  6. Bierzemy teraz wszystko do kupy, zaczynając od końca: 10100 — oto nasza liczba w systemie binarnym.

Wszystkie powyższe kroki przedstawiłem na poniższym schemacie blokowym. Wykorzystałem w nim operator modulo(%), który zwraca resztę z dzielenia dwóch liczb.

System binarny - konwersja

System binarny —  konwersja z dziesiętnego implementacje 

Wiedząc już, jak zamienić liczbę dziesiętną na binarną, nie pozostało nam nic innego, jak wdrożyć tą wiedzę w program. Poniżej znajdziesz implementacje w językach dostępnych na maturze z informatyki.

C++

Java

Python

Podsumowanie

Jak wspominałem na początku, system binarny jest nieodłączną częścią matury z informatyki. Aby ją jak najlepiej napisać warto więc mieć go małym palcu. Jeżeli szukasz dodatkowych materiałów do nauki, zajrzyj do tego wpisu. Omówiłem tam najważniejsze, przydatne na maturze rzeczy. Znajdziesz tam również listę wartych uwagi algorytmów.

grupa wsparcia matura z informatyki
You Might Also Like
1 Comment
  • Avatar photo
    Kaleron
    says:

    W praktyce o wiele częściej posługujemy się systemem szesnastkowym. Ma on te zalety, że jego podstawa jest potęgą dwójki, a zapisywane w nim liczby są dużo łatwiejsze od odczytywania, gdyż mają 4 razy mniej cyfr, niż w przypadku systemu dwójkowego. W dodatku mamy szesnaście cyfr, przez co rzadziej występują długie ciągi powtarzalnych symboli (czytając długi ciąg złożony wyłącznie z cyfr 0 i 1 bardzo łatwo się pomylić, czytając choćby i równie długi, ale bardziej zróżnicowany ciąg cyfr szesnastkowych pomylić się o wiele trudniej), a jednocześnie lest to liczba cyfr nadal łatwa do zapamiętania. Dla początkujących trudnością jest przyzwyczaić się, że A, to dziesiątkowe 10, a nie 11, a F, to dziesiątkowe 15, a nie 16. Tak nam podpowiada intunicja wykorzystująca naszą wiedzę o tym, że A jest pierwszą literą alfabetu, a F – szóstą, ale jeśli ponumerujemy je od zera….numerowanie od zera nie powinno być dużą niespodzianką dla osób zainteresowanych informatyką.

    System szesnastkowy przydaje się w wielu dziedzinach, jak np. w odzyskiwaniu danych, czy w niskopoziomowej analizie oprogramowania, gdzie często pracujemy z plikami binarnymi w hex-edytorze. Ale czym innym jest patrzeć na hexy, a czym innym jest je analizować i przeliczać. Tak, zawsze możemy przeliczać wszystkie wartości szesnastkowe na dziesiątkowe, wykonywać obliczenia w systemie dziesiątkowym i przeliczać wynik na system szesnastkowy, tylko po co? przecież to tylko dodatkowa praca i dodatkowa okazja, by się pomylić. A przecież matematyka jest zawsze taka sama i nie zalezy od wybranej przez nas podstawy systemu liczbowego. Dlatego przygotowałem szesnastkową tabliczkę mnożenia:
    http://kaleron.pl/tabliczka-mnozenia.htm

Dodaj komentarz

icon