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.
Ważne!
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 konwersjikonwersja liczbkonwersji 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:
Linia 1. 52 prawy ukośnik 2 znak równości 26 przecinek reszta 0.
Linia 2. 26 prawy ukośnik 2 znak równości 13 przecinek reszta 0.
Linia 3. 13 prawy ukośnik 2 znak równości 6 przecinek reszta 1.
Linia 4. 6 prawy ukośnik 2 znak równości 3 przecinek reszta 0.
Linia 5. 3 prawy ukośnik 2 znak równości 1 przecinek reszta 1.
Linia 6. 1 prawy ukośnik 2 znak równości 0 przecinek reszta 1 → wynik to 0 i reszta 1 przecinek więc kończymy dzielenie kropka.
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.
Linia 1. Konwertowana liczba dwukropek 52.
Linia 3. Krok 1 kropka Wartość 64 jest większa od 52 przecinek więc zapisujemy cyfrę 0.
Linia 4. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa.
Linia 5. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 7. Krok 2 kropka Wartość 32 jest mniejsza od 52 przecinek więc zapisujemy cyfrę 1.
Linia 8. 52 minus 32 znak równości 20.
Linia 9. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa 1 kreska pionowa kreska pionowa kreska pionowa kreska pionowa kreska pionowa.
Linia 10. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 12. Krok 3 kropka Wartość 16 jest mniejsza od 20 przecinek więc zapisujemy cyfrę 1.
Linia 13. 20 minus 16 znak równości 4.
Linia 14. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa 1 kreska pionowa 1 kreska pionowa kreska pionowa kreska pionowa kreska pionowa.
Linia 15. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 17. Krok 4 kropka Wartość 8 jest większa od 4 przecinek więc zapisujemy cyfrę 0.
Linia 18. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa 1 kreska pionowa 1 kreska pionowa 0 kreska pionowa kreska pionowa kreska pionowa.
Linia 19. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 21. Krok 5 kropka Wartość 4 jest równa wartości 4 przecinek więc zapisujemy cyfrę 1.
Linia 22. 4 minus 4 znak równości 0.
Linia 23. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa 1 kreska pionowa 1 kreska pionowa 0 kreska pionowa 1 kreska pionowa kreska pionowa.
Linia 24. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 26. Krok 6 kropka Wartość 2 jest większa od 0 przecinek więc zapisujemy cyfrę 0.
Linia 27. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa 1 kreska pionowa 1 kreska pionowa 0 kreska pionowa 1 kreska pionowa 0 kreska pionowa.
Linia 28. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 30. Krok 7 kropka Wartość 1 jest większa od 0 przecinek więc zapisujemy cyfrę 0.
Linia 31. liczby apostrof bin apostrof dwukropek kropka kropka kropka 0 kreska pionowa 1 kreska pionowa 1 kreska pionowa 0 kreska pionowa 1 kreska pionowa 0 kreska pionowa 0.
Linia 32. potegi apostrof dzi apostrof dwukropek kropka kropka kropka 64 kreska pionowa 32 kreska pionowa 16 kreska pionowa 8 kreska pionowa 4 kreska pionowa 2 kreska pionowa 1.
Linia 34. Wynik dwukropek 32 plus 16 plus 4 znak równości 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ą.
RZWQZc7MViwVu
Praca domowa
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:
Linia 1. Konwertowana wartość dwukropek 0 przecinek 78125.
Linia 3. 0 przecinek 78125 minus 0 przecinek 5 znak równości 0 przecinek 28125.
Linia 5. Wynik dwukropek 0 przecinek 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:
Linia 1. Konwertowana wartość dwukropek 0 przecinek 78125.
Linia 3. 0 przecinek 78125 minus 0 przecinek 5 znak równości 0 przecinek 28125.
Linia 4. 0 przecinek 28125 minus 0 przecinek 25 znak równości 0 przecinek 03125.
Linia 6. Wynik dwukropek 0 przecinek 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:
Linia 1. Konwertowana wartość dwukropek 0 przecinek 78125.
Linia 3. 0 przecinek 78125 minus 0 przecinek 5 znak równości 0 przecinek 28125.
Linia 4. 0 przecinek 28125 minus 0 przecinek 25 znak równości 0 przecinek 03125.
Linia 5. 0 przecinek 03125 minus 0 przecinek 125 znak równości minus 0 przecinek 09375.
Linia 7. Wynik dwukropek 0 przecinek 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:
Linia 1. Konwertowana wartość dwukropek 0 przecinek 78125.
Linia 3. 0 przecinek 78125 minus 0 przecinek 5 znak równości 0 przecinek 28125.
Linia 4. 0 przecinek 28125 minus 0 przecinek 25 znak równości 0 przecinek 03125.
Linia 5. 0 przecinek 03125 minus 0 przecinek 125 znak równości minus 0 przecinek 09375.
Linia 6. 0 przecinek 03125 minus 0 przecinek 0625 znak równości minus 0 przecinek 03125.
Linia 8. Wynik dwukropek 0 przecinek 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:
Linia 1. Konwertowana wartość dwukropek 0 przecinek 78125.
Linia 3. 0 przecinek 78125 minus 0 przecinek 5 znak równości 0 przecinek 28125.
Linia 4. 0 przecinek 28125 minus 0 przecinek 25 znak równości 0 przecinek 03125.
Linia 5. 0 przecinek 03125 minus 0 przecinek 125 znak równości minus 0 przecinek 09375.
Linia 6. 0 przecinek 03125 minus 0 przecinek 0625 znak równości minus 0 przecinek 03125.
Linia 7. 0 przecinek 03125 minus 0 przecinek 03125 znak równości 0.
Linia 9. Wynik dwukropek 0 przecinek 11001.
Ważne!
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.
Linia 1. 0 przecinek 34 minus 0 przecinek 5 znak równości minus 0 przecinek 16.
Linia 2. 0 przecinek 34 minus 0 przecinek 25 znak równości 0 przecinek 09.
Linia 3. 0 przecinek 09 minus 0 przecinek 125 znak równości minus 0 przecinek 035.
Linia 4. 0 przecinek 09 minus 0 przecinek 0625 znak równości 0 przecinek 0275.
Linia 5. 0 przecinek 0275 minus 0 przecinek 03125 znak równości minus 0 przecinek 00375.
Linia 6. 0 przecinek 0275 minus 0 przecinek 015625 znak równości 0 przecinek 011875.
Linia 8. Wynik dwukropek 0 przecinek 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.
Praca domowa
Kontynuuj rozpisaną konwersję do systemu dwójkowego, aby uzyskać liczbę o dokładności 12 miejsc po przecinku.
Słownik
konwersja liczb
konwersja liczb
operacja polegająca na zamianie postaci zapisu liczby (przykładowo, zapisanie liczby dziesiątkowej w postaci dwójkowej, liczby szesnastkowej w dziesiętnej itp.)