Przeczytaj
Powtórzenie informacji o systemie binarnym
System dwójkowy (binarny) jest pozycyjnym systemem zapisu liczb, w którym używane są dwa symbole (dwie cyfry) – 0 oraz 1. Stąd też wzięła się jego nazwa.
Komputery podczas przetwarzania danych używają właśnie systemu binarnego.
Dlaczego procesory przetwarzają informacje zapisane w systemie dwójkowym? Odpowiedź jest bardzo prosta. Skonstruowanie urządzenia potrafiącego wykonywać operacje na liczbach binarnych jest najłatwiejsze i najtańsze.
Z czego to wynika? Procesory składają się z tranzystorów. Te możemy traktować jako przełączniki, które przepuszczają lub nie przepuszczają prądu, reprezentując odpowiednio jedynki i zera. Przy założeniu, że komputer interpretowałby liczby zapisane w systemie dziesiętnym, byłoby wtedy dziesięć cyfr (od 0 do 9). Musiałoby zatem współistnieć 10 stanów napięcia (np. stan niski, wyższy, jeszcze wyższy itd.). Takie rozwiązanie byłoby nieefektywne i nieekonomiczne.
Zapisywanie liczb dziesiętnych w postaci binarnej
Dokonajmy konwersjikonwersji liczby 52 zapisanej w systemie dziesiętnym do postaci dwójkowej. Omówimy dwa sposoby wykonania takiej operacji.
I metoda: dzielenie liczby przez 2 i wyznaczanie reszty z dzielenia
W tym przypadku dzielimy całkowicie przekształcaną liczbę przez 2 do momentu, w którym iloraz osiągnie wartość 0, a reszta wyniesie 1:
652 / 2 = 26, reszta 0
26 / 2 = 13, reszta 0
13 / 2 = 6, reszta 1
6 / 2 = 3, reszta 0
3 / 2 = 1, reszta 1
1 / 2 = 0, reszta 1 → wynik to 0 i reszta 1, więc kończymy dzielenie.
Wynikiem konwersji, czyli dwójkową postacią liczby, jest ciąg złożony z reszt z dzielenia (odczytywany od dołu do góry).
Przedstawiona metoda konwersji jest relatywnie prosta (wymaga tylko obliczania kolejnych ilorazów i reszt). Istnieje jednak inny sposób przekształcania liczb dziesiętnych do postaci dwójkowej.
II metoda: obliczenia z zastosowaniem wag
W przypadku tego sposobu konwersji wykorzystuje się fakt, że system dwójkowy jest systemem pozycyjnym. Pozycje cyfr składających się na liczbę odpowiadają kolejnym wartościom potęgi liczby 2:
Przedstawiony zapis oznacza, że cyfra 1 umieszczona na pierwszej pozycji odpowiada wartości 1, na drugiej – wartości 2, na trzeciej – wartości 4, na czwartej – wartości 8 itd.
Sama konwersja polega na zapisaniu liczby jako sumy potęg liczby 2, z których każda występuje co najwyżej raz. Na pozycjach odpowiadających wykładnikom tych potęg wpisujemy cyfry 1; pozostałe miejsca zapełniamy zerami.
Stosując opisywaną metodę konwersji, jeszcze raz znajdziemy wartość liczby 52 w systemie dwójkowym. Zaczynamy od znalezienia największej potęgi liczby dwa mniejszej od konwertowanej liczby. W naszym przypadku będzie to wartość 32 (czyli 2Indeks górny 55), ponieważ kolejna potęga liczby 2 - czyli wartość 64 jest większa od 52. Potęgę tę odejmujemy następnie od przekształcanej liczby.
34Konwertowana liczba: 52
Krok 1. Wartość 64 jest większa od 52, więc zapisujemy cyfrę 0
liczby 'bin': ... 0 | | | | | |
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Krok 2. Wartość 32 jest mniejsza od 52, więc zapisujemy cyfrę 1
52 - 32 = 20
liczby 'bin': ... 0 | 1 | | | | |
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Krok 3. Wartość 16 jest mniejsza od 20, więc zapisujemy cyfrę 1
20 - 16 = 4
liczby 'bin': ... 0 | 1 | 1 | | | |
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Krok 4. Wartość 8 jest większa od 4, więc zapisujemy cyfrę 0
liczby 'bin': ... 0 | 1 | 1 | 0 | | |
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Krok 5. Wartość 4 jest równa wartości 4, więc zapisujemy cyfrę 1
4 - 4 = 0
liczby 'bin': ... 0 | 1 | 1 | 0 | 1 | |
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Krok 6. Wartość 2 jest większa od 0, więc zapisujemy cyfrę 0
liczby 'bin': ... 0 | 1 | 1 | 0 | 1 | 0 |
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Krok 7. Wartość 1 jest większa od 0, więc zapisujemy cyfrę 0
liczby 'bin': ... 0 | 1 | 1 | 0 | 1 | 0 | 0
potegi 'dzi': ... 64| 32| 16| 8 | 4 | 2 | 1
Wynik: 32 + 16 + 4 = 52
Wynik jest oczywiście taki sam jak poprzednio.
Zapis liczb ułamkowych w systemie binarnym
Zajmiemy się teraz przekształcaniem części ułamkowych liczb z postaci binarnej do dziesiętnej i odwrotnie.
System binarny → system dziesiętny
Przeanalizujmy proces konwersji przykładowego ułamka dwójkowego:
Wykonujemy następujące czynności:
Pierwszą cyfrę dwójkową po przecinku (w omawianym przykładzie jest to 1) mnożymy przez liczbę 2 podniesioną do potęgi -1:
Kolejną cyfrę (0) mnożymy przez następną ujemną potęgę liczby 2 (czyli przez 2 do potęgi - 2), a wynik dodajemy do poprzedniego iloczynu:
Postępujemy tak ze wszystkimi cyframi po przecinku, za każdym razem zmniejszając o jeden potęgę liczby 2 i sumując kolejne iloczyny:
Kolejnym przykładem będzie liczba 1011,1011Indeks dolny (2),(2),
Poniższa grafika przedstawia potęgi liczby 2, przez które należy pomnożyć poszczególne bity liczby binarnej. Następnie uzyskane wartości sumujemy i uzyskujemy liczbę dziesiętną.

Oblicz wartość 1011,1011Indeks dolny (2)(2) w systemie dziesiętnym. Skorzystaj z powyższej grafiki.
System dziesiętny → system binarny
Przekształcenie ułamka dziesiętnego do postaci dwójkowej jest trochę trudniejsze. Polega ono na odejmowaniu od konwertowanego ułamka kolejnych ujemnych potęg liczby 2.
Jeżeli różnica jest nieujemna, to po przecinku ułamka dwójkowego dopisywana jest cyfra 1; następnie od obliczonej różnicy odejmuje się kolejne ujemne potęgi liczby 2.
Gdy różnica jest ujemna, do ułamka binarnego dopisuje się cyfrę 0; od poprzedniej różnicy odejmuje się kolejną ujemną potęgę liczby 2.
Opisane czynności powtarza się do momentu, w którym różnica osiągnie wartość 0.
Przekształćmy dziesiętny ułamek 0,78125 do postaci dwójkowej.
Od liczby 0,78125 odejmujemy 0,5 (czyli 2 do potęgi -1). Wynik jest dodatni, więc po przecinku ułamka dwójkowego dopisujemy cyfrę 1:
5Konwertowana wartość: 0,78125
0,78125 - 0,5 = 0,28125
Wynik: 0,1
Od liczby 0,28125 odejmujemy 0,25 (czyli 2 do potęgi -2). Wynik jest dodatni, więc do ułamka dwójkowego dopisujemy cyfrę 1:
6Konwertowana wartość: 0,78125
0,78125 - 0,5 = 0,28125
0,28125 - 0,25 = 0,03125
Wynik: 0,11
Od liczby 0,03125 odejmujemy 0,125 (czyli 2 do potęgi -3). Wynik jest ujemny, więc w ułamku binarnym pojawia się cyfra 0:
7Konwertowana wartość: 0,78125
0,78125 - 0,5 = 0,28125
0,28125 - 0,25 = 0,03125
0,03125 - 0,125 = -0,09375
Wynik: 0,110
Od liczby 0,03125 odejmujemy 0,0625 (czyli 2 do potęgi -4). Wynik jest ujemny, więc do ułamka dwójkowego dopisujemy kolejną cyfrę 0:
8Konwertowana wartość: 0,78125
0,78125 - 0,5 = 0,28125
0,28125 - 0,25 = 0,03125
0,03125 - 0,125 = -0,09375
0,03125 - 0,0625 = -0,03125
Wynik: 0,1100
Od liczby 0,03125 odejmujemy 0,03125 (czyli 2 do potęgi -5). Wynik jest równy 0, więc dopisujemy do ułamka dwójkowego cyfrę 1:
9Konwertowana wartość: 0,78125
0,78125 - 0,5 = 0,28125
0,28125 - 0,25 = 0,03125
0,03125 - 0,125 = -0,09375
0,03125 - 0,0625 = -0,03125
0,03125 - 0,03125 = 0
Wynik: 0,11001
Zdarzają się liczby zapisane w systemie dziesiętnym, których dokładne przedstawienie w systemie dwójkowym nie jest możliwe. Wówczas otrzymujemy nieskończone rozwinięcie dziesiętne. W takich sytuacjach najczęściej określa się dokładność żądanej liczby, np. do szóstego miejsca po przecinku.
Przykład:
Dokonajmy konwersji liczby 0,34Indeks dolny (10)(10) do systemu dwójkowego.
80,34 - 0,5 = -0,16
0,34 - 0,25 = 0,09
0,09 - 0,125 = -0,035
0,09 - 0,0625 = 0,0275
0,0275 - 0,03125 = -0,00375
0,0275 - 0,015625 = 0,011875
Wynik: 0,010101
Uzyskany wynik 0,010101Indeks dolny (2)(2) nie jest dokładną reprezentacją liczby 0,34Indeks dolny (10)(10). Jest jej przybliżeniem. Zastosowaliśmy dokładność do szóstego miejsca po przecinku. Mimo zauważalnej powtarzalności cyfr po przecinku, nie można mieć pewności, że każde następne cyfry będą się w ten sam sposób zachowywały.
Kontynuuj rozpisaną konwersję do systemu dwójkowego, aby uzyskać liczbę o dokładności 12 miejsc po przecinku.
Słownik
operacja polegająca na zamianie postaci zapisu liczby (przykładowo, zapisanie liczby dziesiątkowej w postaci dwójkowej, liczby szesnastkowej w dziesiętnej itp.)