Przed chwilą wpadł mi do głowy
pomysł, że mógłbym utworzyć tu małą podstronę z różnymi rodzajami
poradników, tutoriali czy też mini-kursów. Może na razie jako
wypełnienie zacznę od czegoś prostego i podstawowego. Według mnie czymś
takim jest system binarny.
System
binarny jest to inaczej dwójkowy system liczbowy, albo też binarny
system pozycyjny. Jak zwał tak zwał. W każdym bądź razie polega on na
tym, że podstawą tego systemu jest liczba 2. Oznacza to, że znajdują się
w nim tylko 2 cyfry: 0 i 1. Za pomocą tych cyfr można przedstawić każdą
liczbę z systemu dziesiętnego, czyli tego który jest nam najbliższy.
System binarny leży u podstaw działania komputerów, które tak naprawdę
nie potrafią rozróżnić innych stanów niż włączony (1) i wyłączony (0).
Tyle słowem wstępu.
Zamiana
liczb z systemu dziesiętnego na system dwójkowy jest bardzo prosta.
Polega ona na dzieleniu całkowitym liczby zapisanej w systemie
dziesiętnym przez 2 i zapisywaniu reszt z tego dzielenia. Najłatwiej
zobrazować to na przykładzie. Zamienimy teraz liczbę 5 tak aby można
było ją przedstawić za pomocą systemu dwójkowego:
5 dzielimy na 2 zostaje nam 2 reszty 1
2 dzielimy na 2 zostaje nam 1 reszty 0
1 dzielimy na 2 zostaje nam 0 reszty 1
Zapisujemy
reszty od końca i wychodzi nam: 101. Jest to binarna reprezentacja
liczby 5. Przeliczając liczbę na kartce najłatwiej będzie stosować taki
zapis:
5 | 1 = 101
2 | 0
1 | 1
0 |
Inne przykłady:
25 | 1 = 101001 44 | 0 = 101100 64 | 0 = 1000000
12 | 0 22 | 0 32 | 0
6 | 0 11 | 1 16 | 0
3 | 1 5 | 1 8 | 0
2 | 0 2 | 0 4 | 0
1 | 1 1 | 1 2 | 0
0 | 0 | 1 | 1
0 |
Zamiana
w drugą stronę także nie jest trudna. Najprościej wykorzystać do tego
celu tzw. schemat Hornera. (Jak dokładnie działa dowiesz się w moim
następnym poście.) Na przykładzie 5 wygląda to mniej więcej tak:
(((1)*2 + 0)*2 + 1) = 5
Równie dobrze mógłbym to zapisać jako (^ odpowiada za potęgę, 2^2 oznacza 2 do potęgi 2 (do kwadratu)):
1*2^2 + 0*2^1 + 1*2^0 = 5
Oba
zapisy są równoważne, jednak zapis wykorzystujący schemat Hornera jest
prostszy w obliczeniu. Ogólnie zamiana polega na tym, że przepisujemy
pierwszy bit (najmniejsza jednostka w komputerze, może przechowywać
tylko 1 lub 0, 8 bitów daje 1 bajt) i mnożymy go razy dwa. Do wyniku
dodajemy drugi bit i wynik ten znowu mnożymy razy dwa i tak do końca
(ostatni bit jedynie dodajemy, po nim nie mnożymy już wyniku razy dwa).
Można
z tego wywnioskować, że ostatni bit odpowiada za to czy liczba jest
nieparzysta czy też parzysta. Jeśli jest 1 to liczba jest nieparzysta
(gdyż na końcu zamiany dodajemy 1) a jeśli 0 to parzysta (nic nie
dodajemy).
Do
czego przyda nam się ta wiedza? Nawet nie wiesz jak często korzysta się
z niej podczas programowania. Im więcej będziesz programował tym
częściej będziesz się z tym spotykał. Dodatkowo możesz ją tak naprawdę
wykorzystać do każdego innego systemu pozycyjnego np. przy systemie
ósemkowym zamiast przez dwa liczbę dzielimy przez osiem, przy
szesnastkowym przez 16 np.:
25 | 1 = 031 gdyż: ((3)*8+1) = 25
3 | 3
0 |
25 | 9 = 0x19 gdyż ((1)*16 + 9) = 25
1 | 1
0 |
Zapamiętaj,
że przyjęło się, że liczbę w systemie ósemkowym poprzedzamy znakiem 0 a
liczbę zapisaną w systemie szesnastkowym znakami 0x. Łatwiej jest wtedy
rozróżnić od siebie te zapisy. Postaraj się też pamiętać, że system
szesnastkowy zawiera w sobie cyfry od 0 do 9 oraz litery od A do F
(gdzie A oznacza 10, B = 11 itd.).
Brak komentarzy:
Prześlij komentarz
Pamiętaj aby Twoje komentarze były zawsze kulturalne i zgodne z obowiązującą Netykietą. Nie przeklinaj, nie obrażaj i nie wyzywaj innych użytkowników. PS: Nie karm troli.