Słowo “binarny” można zamienić na “dwójkowy” (bi- dwa). Intuicyjnie powinieneś czuć, że jego podstawą jest liczba 2, jeżeli tak jest to intuicja Cię nie myli. W tym systemie są tylko dwie cyfry: 0 i 1. Na pojedynczą cyfrę w systemie binarnym mówi się bit- najmniejsza, niepodzielna wartość informacji. Za ich pomocą można zbudować dowolną wartość w taki sam sposób jak ma to miejsce w systemie dziesiętnym. Te wartości nie należą do najbardziej czytelnych dla człowieka, ale jest kilka sposobów aby sobie z tym poradzić.

Zmiana wartości decymalnej na binarną

Wartości binarne mają postać ciągu zer i jedynek, np. 10101. Możemy powiedzieć, że wartość 10101 jest dziesiętną liczbą zakodowaną binarnie. Jak odkodować taką liczbę? Pamiętasz potęgi, które zostały przedstawione w opisie systemu dziesiętnego? Tak samo postępujemy w systemie binarnym (i każdym innym- tak, jest ich więcej):

bin-dec-0.pngZmiana systemu z binarnego na decymalny #1

Po wyliczeniu wartości każdej z potęg: bin-dec-1.pngZmiana systemu z binarnego na decymalny #2

Czyli:

bin-dec-2.pngZmiana systemu z binarnego na decymalny #3

Daje nam 21. Viola!

Ściąga

A tak na poważnie, wydaje się to bardzo zagmatwane, a ile to pisania... Na szczęście można dopatrzeć się tutaj pewnej zależności. Ponieważ system binarny składa się tylko z zera i jedynki, a inaczej mówiąc, z informacji tak i nie, możemy przyjąć, że każda cyfra informuje nas, czy dana potęga jest albo jej nie ma. Popatrz na to, poniżej przedstawiam tabelkę-ściągę, która w drugim rzędzie opisuje kolejne jedenaście potęg liczby 2 a w czwartym wartość tej potęgi. Rząd trzeci jest po to aby łatwiej zrozumieć wartości w rzędzie poniżej. Intencjonalnie umieszczam najniższą (najmłodszą) potęgę po prawej stronie a największą (najstarszą) po lewej ponieważ tak jest najbardziej naturalnie (tak ma to miejsce w systemie dziesiętnym).

sciaga-bin-dec.pngUniwersalna tabela wartości konwersji systemu binarnego do decymalnego i odwrotnie

W tym momencie powinny się Tobie zapalić jakieś lampki. Na pewno spotkałeś się już kiedyś z takimi wartościami jak 32, 64 czy 1024 w kontekście informatyki. Teraz już wiesz, skąd się to wzięło. Wracając do naszej zgapki- mając taką tabelkę, wystarczy, że rozłożymy dowolną liczbę binarną i umieścimy kolejne cyfry tej liczby w odpowiednie miejsca ich potęg a następnie zsumujemy wszystkie wartości tych potęg, gdzie występuje 1 a wszystkie zera pomijamy (ponieważ dowolna wartość potęgi pomnożona przez 0 da 0). Sprawdźmy czy to naprawdę działa. Dla przykładu weźmy wartość: 10101100. Wartość ma 8 cyfr, możemy dowolnie dopełnić ją zerami z lewej strony- nie zmieni to jej wartości. Umieszczamy tę wartość w kolejne kratki, od końca tabelki (najmłodszy bit po prawej stronie):

sciaga-bin-dec-uzycie.pngPrzykładowe użycie uniwersalnej tabeli

Dodajemy do siebie tylko te wartości, w których bit ma wartość 1, czyli:

sciaga-bin-dec-uzycie-2.pngWynik użycia uniwersalnej tabeli

Daje 172. Na kartce zrobisz to jeszcze szybciej niż ja na komputerze w edytorze tekstu. Bawiąc się wartościami binarnymi możemy odkryć wiele zależności. Najłatwiej zauważyć, że aby uzyskać liczbę nieparzystą, musi ona mieć wartość 1 w najmłodszym bicie, czyli najmłodszy bit decyduje o parzystości liczby.

Zmiana wartości binarnej na decymalną

W drugą stronę jest nieco więcej liczenia, trochę tak jak z dodawaniem i odejmowaniem- odejmowanie raczej przysparza więcej trudu. Jak zakodować binarnie wartość, np. 79? Popatrz na tabelkę-zgapkę. Kodowanie zaczynamy od największej wartości potęgi, która mieści się w liczbie, którą chcemy zamienić. Jaka jest największa wartość potęgi, która “mieści” się w 79? 128 jest za duża, kolejna to 64. Czyli najstarszy bit zakodowanej wartości jest na pozycji 7 (26 = 64)- zakodowana wartość będzie składać się z 7 bitów. Odejmujemy od naszej liczby (79) wartość tej potęgi

Przykład

dec-bin-1.pngPrzykład operacji zmiany wartości dziesiętnej na binarną #1

Teraz od reszty, która nam została odejmujemy kolejną największą wartość potęgi, która mieści się w 15 idąc od lewej do prawej strony kolejnych potęg. Następna potęga to 25 (25 = 32), 32 jest większa od 15, a więc ten bit będzie miał wartość 0

dec-bin-2.pngPrzykład operacji zmiany wartości dziesiętnej na binarną #2

Kolejna potęga, 24 (24 = 16) jest większa niż 15 (16 > 14)- bit na tej pozycji również nie będzie ustawiony, czyli: dec-bin-3.pngPrzykład operacji zmiany wartości dziesiętnej na binarną #3

Następnie sprawdzamy bit na pozycji 4, 23 (23 = 8), 8 mieści się w 15 czyli ten bit będzie miał wartość 1:

dec-bin-4.pngPrzykład operacji zmiany wartości dziesiętnej na binarną #4

Teraz dekodujemy wartość 7 w taki sam sposób, kolejny bit na pozycji drugiej, 22 mieści się w 7- odejmujemy tę wartość:

dec-bin-5.pngPrzykład operacji zmiany wartości dziesiętnej na binarną #4

Teraz dekodujemy wartość 3 w taki sam sposób, kolejny bit na pozycji drugiej, 21 mieści się w 3- odejmujemy tę wartość:

dec-bin-6.pngPrzykład operacji zmiany wartości dziesiętnej na binarną #6

I ostatecznie pozostała nam wartość 1. 20 = 1 i to kończy dekodowanie. Uzyskaliśmy zakodowaną wartość 1001111. Jak poćwiczysz to kilka razy to zobaczysz, że jest to całkiem przyjemne.

Powiązane tematy

URL - adres internetowy

URL - adres internetowy

"W internecie jest wszystko." Do każdego zasobu jest tak samo daleko, wystarczy znać jego adres. Adres zasobu to ścieżka, która prowadzi dokładnie do tej rzeczy. W niej samej zakodowane jest sporo interesujących informacji. Czytaj całość

Sleep- zatrzymywanie programu na pewien czas

System operacyjny, który zarządza uruchomionymi programami, przydziela każdemu porcję czasu procesora, który wykorzystuje ją na wykonanie swojego algorytmu. Program nie może pracować cały czas, bez odpoczynku, jednak istnieje możliwość odłożenia jego pracy w czasie. Czytaj całość

Architektura projektu

Architektura projektu

Niemalże tak szybko, jak wyjdziemy z projektów typu Hello World, tak równie szybko zacznie nam doskwierać poziom skomplikowania struktury projektu. Trzeba sobie z tym poradzić i jest na to masa sposobów. Czytaj całość


Piotr Poźniak

Piotr Poźniak

Programuję od ponad 15 lat. Prowadzę software house. Angażuję i zachęcam wszystkich do programowania w ramach inicjatywy Programowanie jest łatwe.

Bądź pierwszy, podziel się swoją opinią!

Obrazek przedstawiający nadgryzione ciasteczko