Zamiana systemów liczbowych – zasady, metody i przykłady obliczeń

Zamiana systemów liczbowych – zasady, metody i przykłady obliczeń

Zamiana systemów liczbowych jest jednym z podstawowych zagadnień matematyki i informatyki. Pozwala przedstawiać tę samą wartość liczbową za pomocą różnych zestawów cyfr oraz odmiennych podstaw pozycyjnych. Liczba, którą w systemie dziesiętnym zapisujemy jako 10, w systemie binarnym ma postać 1010, w systemie ósemkowym 12, a w systemie szesnastkowym A. Wszystkie te zapisy oznaczają dokładnie tę samą wartość, mimo że wyglądają zupełnie inaczej.

Umiejętność przeliczania liczb między systemami jest szczególnie istotna w programowaniu, elektronice cyfrowej, administracji systemami, analizie danych i budowie komputerów. Komputery wykonują operacje na danych zapisanych binarnie, ale człowiekowi znacznie wygodniej jest posługiwać się systemem dziesiętnym. System szesnastkowy skraca długie ciągi zer i jedynek, dlatego wykorzystuje się go między innymi do zapisu adresów pamięci, kolorów, kodów znaków i wartości bajtów. System ósemkowy pojawia się natomiast w niektórych środowiskach informatycznych, na przykład przy zapisywaniu uprawnień plików.

Choć temat może początkowo wydawać się skomplikowany, większość przeliczeń opiera się na kilku powtarzalnych zasadach. Najważniejsze jest zrozumienie znaczenia podstawy systemu oraz wartości poszczególnych pozycji. Gdy ta zależność staje się jasna, zamiana systemów liczbowych przestaje polegać na mechanicznym zapamiętywaniu schematów, a zaczyna wynikać z logicznej budowy liczb.

Czym są systemy liczbowe?

System liczbowy to sposób zapisywania liczb przy użyciu określonych symboli i reguł. Poszczególne systemy mogą wykorzystywać różną liczbę cyfr. Liczbę dostępnych znaków określa podstawa systemu liczbowego.

System dziesiętny ma podstawę 10, ponieważ wykorzystuje dziesięć cyfr: od 0 do 9. System binarny ma podstawę 2 i korzysta tylko z cyfr 0 oraz 1. System ósemkowy używa ośmiu cyfr, od 0 do 7, natomiast system szesnastkowy wykorzystuje szesnaście symboli: cyfry od 0 do 9 oraz litery A, B, C, D, E i F.

W systemach pozycyjnych wartość cyfry zależy nie tylko od jej symbolu, lecz także od miejsca zajmowanego w liczbie. Przykładowo cyfra 5 w liczbie 500 oznacza pięć setek, natomiast w liczbie 0,5 oznacza pięć dziesiątych. Ten sam symbol ma inną wartość, ponieważ znajduje się na innej pozycji.

Każda pozycja odpowiada kolejnej potędze podstawy systemu. W systemie dziesiętnym kolejne miejsca od prawej strony oznaczają jedności, dziesiątki, setki i tysiące, czyli potęgi liczby 10. W systemie binarnym są to potęgi liczby 2, a w systemie szesnastkowym potęgi liczby 16.

Podstawa systemu liczbowego

Podstawa systemu informuje, ile różnych cyfr można wykorzystać oraz jak zmienia się wartość kolejnych pozycji. Dla systemu o podstawie p dozwolone są cyfry od 0 do p – 1. Jeżeli podstawa jest większa niż 10, brakujące symbole najczęściej zastępuje się literami.

W systemie o podstawie 2 dostępne są cyfry 0 i 1. Cyfra 2 nie może wystąpić w poprawnie zapisanej liczbie binarnej. W systemie ósemkowym najwyższą cyfrą jest 7, dlatego zapis 128 nie jest liczbą ósemkową. W systemie szesnastkowym po cyfrze 9 pojawiają się litery:

  • A oznacza wartość 10,
  • B oznacza 11,
  • C oznacza 12,
  • D oznacza 13,
  • E oznacza 14,
  • F oznacza 15.

Po osiągnięciu najwyższej cyfry przechodzi się do następnej pozycji. W systemie dziesiętnym po liczbie 9 następuje 10. W systemie binarnym po 1 pojawia się 10, w ósemkowym po 7 występuje 10, a w szesnastkowym po F pojawia się 10. Należy jednak pamiętać, że zapis 10 ma inną wartość w zależności od podstawy. W systemie binarnym oznacza 2, w ósemkowym 8, w dziesiętnym 10, a w szesnastkowym 16.

System dziesiętny

System dziesiętny jest podstawowym systemem używanym przez człowieka w codziennych obliczeniach. Jego podstawa wynosi 10. Wykorzystuje cyfry:

0, 1, 2, 3, 4, 5, 6, 7, 8 i 9.

Każda kolejna pozycja całkowita od prawej strony jest dziesięć razy większa od poprzedniej. W liczbie 4729 możemy wyróżnić:

4 · 10³ + 7 · 10² + 2 · 10¹ + 9 · 10⁰.

Po obliczeniu otrzymujemy:

4 · 1000 + 7 · 100 + 2 · 10 + 9 · 1 = 4729.

Po prawej stronie przecinka znajdują się ujemne potęgi liczby 10. Liczbę 13,47 można przedstawić jako:

1 · 10¹ + 3 · 10⁰ + 4 · 10⁻¹ + 7 · 10⁻².

System dziesiętny jest dla większości osób najbardziej intuicyjny, dlatego często pełni rolę systemu pośredniego. Liczbę zapisaną w dowolnym systemie można najpierw zamienić na dziesiętną, a następnie na system docelowy. Nie zawsze jest to metoda najszybsza, ale jest uniwersalna i stosunkowo łatwa do sprawdzenia.

System binarny

System binarny, nazywany również dwójkowym, ma podstawę 2. Wykorzystuje tylko dwie cyfry:

0 i 1.

Każda pozycja liczby binarnej odpowiada kolejnej potędze liczby 2. Liczba 101101₂ może zostać rozwinięta następująco:

1 · 2⁵ + 0 · 2⁴ + 1 · 2³ + 1 · 2² + 0 · 2¹ + 1 · 2⁰.

Po wykonaniu obliczeń otrzymujemy:

32 + 0 + 8 + 4 + 0 + 1 = 45.

Oznacza to, że:

101101₂ = 45₁₀.

System binarny jest fundamentem działania współczesnych komputerów. Układy elektroniczne mogą reprezentować dwa wyraźnie rozróżnialne stany, na przykład niski i wysoki poziom napięcia. Umownie przypisuje się im wartości 0 i 1. Pojedynczą cyfrę binarną nazywa się bitem.

Osiem bitów tworzy bajt. Jeden bajt może reprezentować 256 różnych kombinacji, od 00000000 do 11111111. W zapisie bez znaku odpowiada to wartościom dziesiętnym od 0 do 255.

System ósemkowy

System ósemkowy ma podstawę 8 i wykorzystuje cyfry od 0 do 7. Kolejne pozycje odpowiadają potęgom liczby 8:

8⁰ = 1,
8¹ = 8,
8² = 64,
8³ = 512.

Przykładowo liczba 527₈ oznacza:

5 · 8² + 2 · 8¹ + 7 · 8⁰.

Po obliczeniu:

5 · 64 + 2 · 8 + 7 = 320 + 16 + 7 = 343.

Zatem:

527₈ = 343₁₀.

System ósemkowy był dawniej szerzej wykorzystywany w informatyce, ponieważ jedna cyfra ósemkowa odpowiada dokładnie trzem bitom. Dzięki temu długie liczby binarne można skrócić bez wykonywania złożonych obliczeń. Obecnie system szesnastkowy jest używany częściej, ale ósemkowy nadal występuje między innymi w systemach uniksowych.

System szesnastkowy

System szesnastkowy, określany również jako heksadecymalny, ma podstawę 16. Wykorzystuje cyfry od 0 do 9 oraz litery od A do F. Kolejne pozycje odpowiadają potęgom liczby 16:

16⁰ = 1,
16¹ = 16,
16² = 256,
16³ = 4096.

Liczba 2AF₁₆ oznacza:

2 · 16² + A · 16¹ + F · 16⁰.

Po zastąpieniu liter wartościami dziesiętnymi otrzymujemy:

2 · 256 + 10 · 16 + 15 · 1.

Zatem:

512 + 160 + 15 = 687.

Ostatecznie:

2AF₁₆ = 687₁₀.

System szesnastkowy jest niezwykle popularny w informatyce, ponieważ jedna cyfra odpowiada dokładnie czterem bitom. Bajt składający się z ośmiu bitów można zapisać przy użyciu zaledwie dwóch cyfr szesnastkowych. Przykładowo liczba binarna 11111111 odpowiada wartości FF₁₆.

Oznaczanie podstawy systemu

Podczas zamiany systemów liczbowych należy wyraźnie wskazywać podstawę liczby. Najczęściej robi się to przez zapisanie niewielkiego indeksu dolnego:

1011₂,
73₈,
59₁₀,
2F₁₆.

Taki zapis pozwala uniknąć nieporozumień. Liczba 101 może oznaczać zupełnie inną wartość w zależności od systemu:

101₂ = 5₁₀,
101₈ = 65₁₀,
101₁₀ = 101₁₀,
101₁₆ = 257₁₀.

W programowaniu używa się również specjalnych prefiksów. Zapis binarny może zaczynać się od 0b, na przykład 0b1010. Liczby szesnastkowe często poprzedza się znakami 0x, na przykład 0xFF. Sposób oznaczenia liczb ósemkowych zależy od języka programowania i przyjętej składni.

Na czym polega zamiana systemów liczbowych?

Zamiana systemów liczbowych polega na przedstawieniu tej samej wartości w innym systemie pozycyjnym. Wartość liczby się nie zmienia, zmienia się wyłącznie sposób jej zapisania. Jest to podobne do przedstawiania tej samej długości w metrach i centymetrach: zapis wygląda inaczej, lecz opisywana wielkość pozostaje taka sama.

Można wyróżnić kilka najważniejszych rodzajów konwersji:

  • zamianę dowolnego systemu na dziesiętny,
  • zamianę systemu dziesiętnego na dowolny,
  • bezpośrednią zamianę systemu binarnego na ósemkowy,
  • bezpośrednią zamianę binarnego na szesnastkowy,
  • przeliczanie liczb z częścią ułamkową.

Najbardziej uniwersalna metoda polega na wykorzystaniu systemu dziesiętnego jako etapu pośredniego. Liczbę źródłową rozwija się według potęg jej podstawy, uzyskując wartość dziesiętną. Następnie tę wartość przelicza się na system docelowy.

W szczególnych przypadkach istnieją metody szybsze. Ponieważ 8 jest potęgą liczby 2, zamiana między systemem binarnym i ósemkowym może być wykonana przez grupowanie bitów po trzy. Ponieważ 16 = 2⁴, w konwersji binarno-szesnastkowej grupuje się bity po cztery.

Zamiana liczby z dowolnego systemu na dziesiętny

Aby zamienić liczbę całkowitą na system dziesiętny, należy pomnożyć każdą cyfrę przez odpowiednią potęgę podstawy, a następnie dodać uzyskane wyniki. Numerowanie pozycji rozpoczyna się od zera, licząc od prawej strony.

Ogólny zapis liczby:

aₙaₙ₋₁…a₂a₁a₀

w systemie o podstawie p oznacza:

aₙ · pⁿ + aₙ₋₁ · pⁿ⁻¹ + … + a₂ · p² + a₁ · p¹ + a₀ · p⁰.

Metoda ta działa dla każdego systemu pozycyjnego. Wystarczy znać podstawę oraz wartości użytych cyfr.

Zamiana systemu binarnego na dziesiętny

Rozważmy liczbę:

110101₂.

Kolejne pozycje odpowiadają potęgom od 2⁵ do 2⁰:

1 · 2⁵ + 1 · 2⁴ + 0 · 2³ + 1 · 2² + 0 · 2¹ + 1 · 2⁰.

Po obliczeniu:

32 + 16 + 0 + 4 + 0 + 1 = 53.

Zatem:

110101₂ = 53₁₀.

Można również wykorzystywać tabelę potęg liczby 2:

PotęgaWartość2⁰12¹22²42³82⁴162⁵322⁶642⁷128

Dla cyfr równych 1 wybiera się odpowiadające im wartości i dodaje je. W liczbie 110101₂ jedynki znajdują się na pozycjach o wartościach 32, 16, 4 i 1, co daje 53.

Zamiana systemu ósemkowego na dziesiętny

Weźmy liczbę:

346₈.

Rozwijamy ją według potęg podstawy 8:

3 · 8² + 4 · 8¹ + 6 · 8⁰.

Obliczenia:

3 · 64 + 4 · 8 + 6 = 192 + 32 + 6 = 230.

Zatem:

346₈ = 230₁₀.

Warto pamiętać, że w systemie ósemkowym nie mogą pojawić się cyfry 8 ani 9. Ich obecność oznacza, że liczba została zapisana błędnie albo należy do innego systemu.

Zamiana systemu szesnastkowego na dziesiętny

Rozważmy liczbę:

3B7₁₆.

Najpierw zamieniamy literę B na wartość 11:

3 · 16² + 11 · 16¹ + 7 · 16⁰.

Po obliczeniu:

3 · 256 + 11 · 16 + 7 = 768 + 176 + 7 = 951.

Zatem:

3B7₁₆ = 951₁₀.

Dla liczby zawierającej kilka liter postępuje się tak samo. Przykładowo:

FACE₁₆ = 15 · 16³ + 10 · 16² + 12 · 16¹ + 14 · 16⁰.

Nie należy traktować liter jako elementów tekstowych. Każda reprezentuje konkretną wartość liczbową.

Schemat Hornera w zamianie na system dziesiętny

Oprócz rozwijania liczby na sumę potęg można wykorzystać schemat Hornera. Jest on szczególnie wygodny przy długich liczbach, ponieważ wymaga mniejszej liczby potęgowań.

Dla liczby 110101₂ obliczenia mogą wyglądać następująco:

  1. Rozpoczynamy od pierwszej cyfry: 1.
  2. Mnożymy przez podstawę 2 i dodajemy kolejną cyfrę.
  3. Powtarzamy działanie aż do ostatniej cyfry.

Obliczenia:

1 · 2 + 1 = 3,
3 · 2 + 0 = 6,
6 · 2 + 1 = 13,
13 · 2 + 0 = 26,
26 · 2 + 1 = 53.

Otrzymujemy ten sam wynik:

110101₂ = 53₁₀.

Dla liczby szesnastkowej 2AF₁₆:

2 · 16 + 10 = 42,
42 · 16 + 15 = 687.

Schemat Hornera jest prosty do zaimplementowania w programie i ogranicza ryzyko pomyłek związanych z obliczaniem dużych potęg.

Zamiana liczby dziesiętnej na system binarny

Najpopularniejszą metodą zamiany dodatniej liczby całkowitej z systemu dziesiętnego na binarny jest wielokrotne dzielenie przez 2. Przy każdym dzieleniu zapisuje się resztę. Wynik odczytuje się od ostatniej reszty do pierwszej.

Przeliczmy liczbę 45:

45 : 2 = 22 reszty 1,
22 : 2 = 11 reszty 0,
11 : 2 = 5 reszty 1,
5 : 2 = 2 reszty 1,
2 : 2 = 1 reszty 0,
1 : 2 = 0 reszty 1.

Reszty zapisane od dołu dają:

101101₂.

Zatem:

45₁₀ = 101101₂.

Kierunek odczytywania reszt jest niezwykle ważny. Pierwsza otrzymana reszta odpowiada najmniej znaczącemu bitowi, czyli prawej stronie liczby. Ostatnia reszta staje się cyfrą najbardziej znaczącą.

Zamiana przez rozkład na potęgi liczby 2

Liczbę dziesiętną można również przedstawić jako sumę potęg liczby 2. Dla liczby 45 wybieramy największą potęgę nieprzekraczającą tej wartości:

2⁵ = 32.

Po odjęciu:

45 – 32 = 13.

Następna pasująca potęga to:

2³ = 8, więc pozostaje 5.

Następnie:

2² = 4, pozostaje 1.

Na końcu:

2⁰ = 1.

Otrzymujemy:

45 = 2⁵ + 2³ + 2² + 2⁰.

Wstawiamy jedynki na odpowiadających pozycjach i zera na pozostałych:

101101₂.

Metoda ta pomaga zrozumieć znaczenie bitów, choć przy dużych liczbach dzielenie z resztą jest zwykle bardziej systematyczne.

Zamiana liczby dziesiętnej na system ósemkowy

W tej konwersji wykorzystuje się wielokrotne dzielenie przez 8. Przykładowo zamieńmy liczbę 230₁₀ na zapis ósemkowy:

230 : 8 = 28 reszty 6,
28 : 8 = 3 reszty 4,
3 : 8 = 0 reszty 3.

Reszty odczytujemy od dołu:

346₈.

Zatem:

230₁₀ = 346₈.

Mechanizm jest dokładnie taki sam jak przy zamianie na system binarny. Zmienia się wyłącznie dzielnik. Reszta z dzielenia przez 8 zawsze mieści się w zakresie od 0 do 7, czyli odpowiada cyfrze dozwolonej w systemie ósemkowym.

Zamiana liczby dziesiętnej na system szesnastkowy

Aby zamienić liczbę dziesiętną na system szesnastkowy, wykonuje się wielokrotne dzielenie przez 16. Reszty od 10 do 15 należy zastąpić odpowiednimi literami.

Przeliczmy liczbę 687:

687 : 16 = 42 reszty 15,
42 : 16 = 2 reszty 10,
2 : 16 = 0 reszty 2.

Reszta 15 to F, a reszta 10 to A. Odczytując od dołu, uzyskujemy:

2AF₁₆.

Zatem:

687₁₀ = 2AF₁₆.

Dla innego przykładu, liczby 255:

255 : 16 = 15 reszty 15,
15 : 16 = 0 reszty 15.

Obie reszty odpowiadają literze F, dlatego:

255₁₀ = FF₁₆.

Uniwersalna metoda dzielenia przez podstawę

Procedurę przeliczania dodatniej liczby całkowitej z systemu dziesiętnego na dowolny system można ująć w kilku krokach:

  1. Dzielimy liczbę przez podstawę systemu docelowego.
  2. Zapisujemy resztę z dzielenia.
  3. Iloraz ponownie dzielimy przez podstawę.
  4. Powtarzamy operację, aż iloraz będzie równy zero.
  5. Reszty odczytujemy w odwrotnej kolejności.

Jeżeli podstawa jest większa niż 10, wartości reszt przekraczające 9 zapisuje się przy użyciu liter lub innych ustalonych symboli.

Metoda działa dlatego, że kolejne reszty określają współczynniki przy potęgach podstawy. Pierwsza reszta odpowiada potędze zerowej, kolejna potędze pierwszej, następna potędze drugiej i tak dalej.

Bezpośrednia zamiana systemu binarnego na ósemkowy

Ponieważ 8 = 2³, każda cyfra ósemkowa odpowiada dokładnie trzem cyfrom binarnym. Dzięki temu liczbę można przeliczyć bez przechodzenia przez system dziesiętny.

Podstawowe odpowiedniki wyglądają następująco:

BinarnieÓsemkowo00000011010201131004101511061117

Aby zamienić liczbę binarną na ósemkową, grupujemy bity po trzy, zaczynając od prawej strony. Jeśli skrajna grupa jest niepełna, uzupełniamy ją zerami z lewej strony.

Przykład:

11010111₂.

Grupowanie:

011 010 111.

Następnie każdą grupę zamieniamy na cyfrę ósemkową:

011 = 3,
010 = 2,
111 = 7.

Otrzymujemy:

11010111₂ = 327₈.

Dodane zero z lewej strony nie zmienia wartości liczby.

Bezpośrednia zamiana systemu ósemkowego na binarny

Konwersja odwrotna polega na zastąpieniu każdej cyfry ósemkowej dokładnie trzema bitami. Przykładowo:

572₈.

Zamieniamy cyfry:

5 = 101,
7 = 111,
2 = 010.

Łączymy grupy:

101111010₂.

Zatem:

572₈ = 101111010₂.

Należy zachowywać zera znajdujące się wewnątrz i na końcu trzybitowych grup. Usunięcie zera z grupy 010 zmieniłoby układ pozycji i doprowadziło do błędnego wyniku. Można usunąć jedynie zbędne zera stojące na początku całej liczby.

Bezpośrednia zamiana systemu binarnego na szesnastkowy

Ponieważ 16 = 2⁴, każdej cyfrze szesnastkowej odpowiadają cztery bity. Tabela zależności wygląda następująco:

BinarnieSzesnastkowo000000001100102001130100401015011060111710008100191010A1011B1100C1101D1110E1111F

Przeliczmy liczbę:

101101111010₂.

Grupujemy po cztery bity:

1011 0111 1010.

Następnie:

1011 = B,
0111 = 7,
1010 = A.

Otrzymujemy:

101101111010₂ = B7A₁₆.

Ta metoda jest znacznie szybsza niż rozwijanie liczby do systemu dziesiętnego, szczególnie przy długich ciągach binarnych.

Zamiana systemu szesnastkowego na binarny

Każdą cyfrę szesnastkową zastępujemy czterema bitami. Przykładowo:

3AD₁₆.

Zamiana poszczególnych cyfr:

3 = 0011,
A = 1010,
D = 1101.

Po połączeniu:

001110101101₂.

Początkowe zera można pominąć:

1110101101₂.

Zatem:

3AD₁₆ = 1110101101₂.

W praktyce często pozostawia się pełne grupy czterobitowe, ponieważ ułatwiają one kontrolę poprawności, analizę bajtów oraz późniejszą zamianę z powrotem na zapis szesnastkowy.

Zamiana systemu ósemkowego na szesnastkowy

Nie ma tak prostego bezpośredniego przyporządkowania pojedynczych cyfr, ponieważ 8 i 16 nie są wzajemnie całkowitymi potęgami. Najwygodniej przejść przez system binarny.

Przeliczmy liczbę:

735₈.

Najpierw każdą cyfrę zamieniamy na trzy bity:

7 = 111,
3 = 011,
5 = 101.

Otrzymujemy:

111011101₂.

Następnie grupujemy od prawej strony po cztery bity:

0001 1101 1101.

Zamieniamy grupy:

0001 = 1,
1101 = D,
1101 = D.

Zatem:

735₈ = 1DD₁₆.

Można również przejść przez system dziesiętny, ale konwersja przez zapis binarny jest zazwyczaj szybsza.

Zamiana systemu szesnastkowego na ósemkowy

W tym przypadku również najlepiej skorzystać z systemu binarnego. Weźmy liczbę:

2F6₁₆.

Najpierw zamieniamy każdą cyfrę szesnastkową na cztery bity:

2 = 0010,
F = 1111,
6 = 0110.

Otrzymujemy:

001011110110₂.

Grupujemy po trzy bity:

001 011 110 110.

Następnie:

001 = 1,
011 = 3,
110 = 6,
110 = 6.

Zatem:

2F6₁₆ = 1366₈.

Metoda jest bezpieczna, jeśli każdą cyfrę szesnastkową zapisuje się pełną grupą czterech bitów, a każdą cyfrę ósemkową pełną grupą trzech bitów.

Zamiana liczb z częścią ułamkową

Konwersja liczb nie musi ograniczać się do części całkowitych. Możliwe jest również przeliczanie wartości zawierających część ułamkową. Pozycje znajdujące się po separatorze odpowiadają ujemnym potęgom podstawy.

W systemie binarnym pierwsza pozycja po przecinku ma wartość:

2⁻¹ = 1/2.

Kolejne wynoszą:

2⁻² = 1/4,
2⁻³ = 1/8,
2⁻⁴ = 1/16.

W systemie ósemkowym są to potęgi 8⁻¹, 8⁻² i kolejne, natomiast w szesnastkowym potęgi 16⁻¹, 16⁻² i dalsze.

Zamiana ułamka binarnego na dziesiętny

Rozważmy liczbę:

101,101₂.

Część całkowita:

1 · 2² + 0 · 2¹ + 1 · 2⁰ = 4 + 0 + 1 = 5.

Część ułamkowa:

1 · 2⁻¹ + 0 · 2⁻² + 1 · 2⁻³.

Po obliczeniu:

1/2 + 0 + 1/8 = 0,5 + 0,125 = 0,625.

Łącznie:

101,101₂ = 5,625₁₀.

Pozycje po przecinku numeruje się kolejno wykładnikami -1, -2, -3 i tak dalej. Nie należy rozpoczynać od wykładnika zerowego, ponieważ ten odpowiada pozycji jedności znajdującej się bezpośrednio przed przecinkiem.

Zamiana ułamka ósemkowego na dziesiętny

Weźmy liczbę:

17,34₈.

Część całkowita:

1 · 8¹ + 7 · 8⁰ = 8 + 7 = 15.

Część ułamkowa:

3 · 8⁻¹ + 4 · 8⁻².

Czyli:

3/8 + 4/64 = 0,375 + 0,0625 = 0,4375.

Ostatecznie:

17,34₈ = 15,4375₁₀.

Metoda jest identyczna jak dla liczby binarnej. Różnica dotyczy podstawy potęg.

Zamiana ułamka szesnastkowego na dziesiętny

Rozważmy liczbę:

A,8C₁₆.

Część całkowita A oznacza 10. Część ułamkowa ma wartość:

8 · 16⁻¹ + C · 16⁻².

Litera C oznacza 12, więc:

8/16 + 12/256 = 0,5 + 0,046875 = 0,546875.

Zatem:

A,8C₁₆ = 10,546875₁₀.

Przy przeliczaniu warto najpierw zastąpić litery ich wartościami dziesiętnymi. Ogranicza to ryzyko pomyłki w dalszych działaniach.

Zamiana ułamka dziesiętnego na system binarny

Część całkowitą przelicza się przez dzielenie przez 2, natomiast część ułamkową przez wielokrotne mnożenie przez 2. Za każdym razem zapisuje się część całkowitą uzyskanego wyniku.

Przeliczmy liczbę 0,625₁₀:

0,625 · 2 = 1,25 – zapisujemy 1, pozostaje 0,25.
0,25 · 2 = 0,5 – zapisujemy 0, pozostaje 0,5.
0,5 · 2 = 1,0 – zapisujemy 1, proces się kończy.

Cyfry odczytujemy w kolejności ich otrzymywania:

0,101₂.

Zatem:

0,625₁₀ = 0,101₂.

Dla liczby zawierającej część całkowitą, na przykład 5,625, przeliczamy obie części osobno:

5₁₀ = 101₂,
0,625₁₀ = 0,101₂.

Po połączeniu:

5,625₁₀ = 101,101₂.

Zamiana ułamka dziesiętnego na system ósemkowy

W tej metodzie część ułamkową mnoży się przez 8. Przeliczmy 0,4375₁₀:

0,4375 · 8 = 3,5 – zapisujemy 3, pozostaje 0,5.
0,5 · 8 = 4,0 – zapisujemy 4.

Otrzymujemy:

0,34₈.

Zatem:

0,4375₁₀ = 0,34₈.

Części całkowite kolejnych iloczynów tworzą cyfry wyniku od lewej do prawej. Jest to odwrotna sytuacja niż w metodzie dzielenia, gdzie reszty odczytuje się od końca.

Zamiana ułamka dziesiętnego na system szesnastkowy

Część ułamkową mnożymy przez 16. Przeliczmy 0,546875₁₀:

0,546875 · 16 = 8,75 – zapisujemy 8, pozostaje 0,75.
0,75 · 16 = 12,0 – zapisujemy C.

Otrzymujemy:

0,8C₁₆.

Zatem:

0,546875₁₀ = 0,8C₁₆.

Jeżeli część całkowita iloczynu wynosi od 10 do 15, trzeba zastąpić ją odpowiednią literą.

Ułamki okresowe w różnych systemach

Nie każdy ułamek dziesiętny ma skończone rozwinięcie binarne. Przykładowo liczba 0,1₁₀ nie może zostać dokładnie zapisana za pomocą skończonej liczby bitów po przecinku. Podczas wielokrotnego mnożenia przez 2 pojawia się powtarzający ciąg cyfr.

To zjawisko jest podobne do zapisu liczby 1/3 w systemie dziesiętnym:

1/3 = 0,3333…

Ułamek ma skończone rozwinięcie w systemie o podstawie p, jeśli po skróceniu jego mianownik zawiera wyłącznie czynniki pierwsze występujące w rozkładzie podstawy. Podstawa 2 ma tylko czynnik 2, dlatego ułamki o mianownikach będących potęgami liczby 2 mają skończony zapis binarny.

Liczba 0,625 ma postać 5/8, dlatego jej zapis binarny jest skończony. Liczba 0,1 to 1/10, a mianownik zawiera czynnik 5, dlatego rozwinięcie binarne jest nieskończone.

Ma to praktyczne znaczenie w informatyce. Niektóre wartości dziesiętne są przechowywane w komputerze jedynie w przybliżeniu, co może powodować drobne błędy w obliczeniach zmiennoprzecinkowych.

Bezpośrednia zamiana ułamków binarnych na ósemkowe

W przypadku części ułamkowej grupowanie rozpoczyna się od przecinka i przebiega w prawo. Bity grupuje się po trzy. Niepełną ostatnią grupę uzupełnia się zerami z prawej strony.

Przykład:

1011,10111₂.

Część całkowita, grupowana od prawej:

001 011.

Część ułamkowa, grupowana od lewej:

101 110.

Odpowiedniki ósemkowe:

001 = 1,
011 = 3,
101 = 5,
110 = 6.

Otrzymujemy:

1011,10111₂ = 13,56₈.

Zero dodane po prawej stronie części ułamkowej nie zmienia wartości, podobnie jak zero dopisane na końcu zwykłego ułamka dziesiętnego.

Bezpośrednia zamiana ułamków binarnych na szesnastkowe

Bity części całkowitej grupujemy od prawej strony po cztery, natomiast część ułamkową od lewej strony po cztery.

Przykład:

110101,1011₂.

Grupowanie:

0011 0101,1011.

Zamiana:

0011 = 3,
0101 = 5,
1011 = B.

Zatem:

110101,1011₂ = 35,B₁₆.

W przypadku niepełnej grupy w części ułamkowej dopisuje się zera po prawej stronie. W części całkowitej dopisuje się je po lewej.

Liczby ujemne a zamiana systemów liczbowych

Na poziomie czysto matematycznym znak minus można zachować przed liczbą i przeliczyć jedynie jej wartość bezwzględną. Przykładowo:

-45₁₀ = -101101₂.

Taki zapis jest zrozumiały dla człowieka, ale komputery wykorzystują specjalne sposoby kodowania liczb ujemnych. Najpopularniejszym jest kod uzupełnień do dwóch, nazywany kodem U2.

W zapisie o ustalonej liczbie bitów najwyższy bit pełni szczególną funkcję. Aby otrzymać reprezentację liczby przeciwnej w kodzie U2, można odwrócić wszystkie bity liczby dodatniej, a następnie dodać 1.

Przykładowo liczba 5 w zapisie ośmiobitowym to:

00000101.

Odwracamy bity:

11111010.

Dodajemy 1:

11111011.

Zatem -5 w ośmiobitowym kodzie U2 ma postać:

11111011.

Należy odróżnić matematyczną zamianę liczby ze znakiem od analizy reprezentacji komputerowej. Ten sam ciąg bitów może oznaczać inną wartość w zależności od tego, czy interpretujemy go jako liczbę bez znaku, liczbę w kodzie U2 czy część zapisu zmiennoprzecinkowego.

Liczby bez znaku i ze znakiem

Dla n bitów liczba bez znaku może przyjmować wartości od:

0 do 2ⁿ – 1.

Dla ośmiu bitów zakres wynosi od 0 do 255.

W kodzie uzupełnień do dwóch zakres ośmiobitowy wynosi:

od -128 do 127.

Ciąg 11111111 oznacza zatem:

  • 255, jeśli jest interpretowany bez znaku,
  • -1, jeśli jest interpretowany jako liczba ośmiobitowa w kodzie U2.

Sama zamiana cyfr nie wystarczy. Trzeba również znać sposób interpretacji danych, liczbę bitów i przyjęty format.

Działania w różnych systemach liczbowych

Liczby można dodawać, odejmować, mnożyć i dzielić bezpośrednio w każdym systemie. Reguły są podobne do działań dziesiętnych, ale przeniesienie następuje po osiągnięciu wartości równej podstawie.

W systemie binarnym:

0 + 0 = 0,
0 + 1 = 1,
1 + 0 = 1,
1 + 1 = 10₂.

Ostatni wynik oznacza zapisanie zera i przeniesienie jedynki na następną pozycję.

Przykład:

  1011
+ 0110
------
 10001

Wartość dziesiętna pierwszej liczby wynosi 11, drugiej 6, a wynik 17, co potwierdza poprawność działania.

W systemie szesnastkowym suma A + 7 wynosi 17 dziesiętnie, czyli 11₁₆. Zapisujemy 1 i przenosimy 1 do kolejnej kolumny.

Choć działania można wykonywać bezpośrednio, podczas nauki często łatwiej jest przeliczyć liczby na system dziesiętny, wykonać obliczenie, a następnie zamienić wynik na wymagany system. Nie zawsze jest to najbardziej wydajne, lecz ułatwia kontrolę.

Sprawdzanie poprawności przeliczenia

Najprostszym sposobem weryfikacji jest wykonanie konwersji odwrotnej. Jeśli liczbę dziesiętną zamieniliśmy na binarną, możemy ponownie rozwinąć wynik według potęg liczby 2 i sprawdzić, czy otrzymamy wartość początkową.

Przykładowo wynik:

73₁₀ = 1001001₂.

Sprawdzenie:

1 · 2⁶ + 0 · 2⁵ + 0 · 2⁴ + 1 · 2³ + 0 · 2² + 0 · 2¹ + 1 · 2⁰.

Otrzymujemy:

64 + 8 + 1 = 73.

Przy zamianie binarno-szesnastkowej można również sprawdzić grupy czterobitowe. Każda cyfra szesnastkowa powinna odpowiadać dokładnie czterem bitom. Jeżeli liczba grup nie zgadza się z liczbą cyfr albo w grupie brakuje bitów, prawdopodobnie popełniono błąd podczas grupowania.

Najczęstsze błędy podczas zamiany systemów liczbowych

Jednym z najczęstszych błędów jest nieprawidłowy kierunek odczytywania reszt. W metodzie dzielenia reszty trzeba czytać od końca. Zapisanie ich w kolejności otrzymywania prowadzi do odwróconej liczby.

Drugi problem dotyczy numerowania potęg. Prawa skrajna cyfra części całkowitej zawsze odpowiada potędze zerowej. Nie należy rozpoczynać od potęgi pierwszej. Po prawej stronie przecinka pierwsza pozycja ma wykładnik -1.

Często popełniane błędy obejmują także:

  • używanie cyfry niedozwolonej w danej podstawie,
  • nieprawidłowe wartości liter A–F,
  • grupowanie bitów od niewłaściwej strony,
  • usuwanie ważnych zer wewnątrz grup,
  • mylenie wartości liczby z jej zapisem,
  • pomijanie podstawy systemu,
  • błędne łączenie części całkowitej i ułamkowej.

Warto również uważać na zapis dziesiętny. Ciąg 1000₂ nie oznacza tysiąca, lecz osiem. Odczytywanie liczby zgodnie z wyglądem dziesiętnym bez uwzględnienia podstawy jest podstawowym błędem interpretacyjnym.

Grupowanie bitów – właściwy kierunek

Kierunek grupowania jest szczególnie ważny podczas szybkiej zamiany na system ósemkowy lub szesnastkowy. Dla części całkowitej grupy tworzy się od prawej strony, czyli od najmniej znaczących bitów. Dla części ułamkowej zaczyna się od przecinka i przesuwa w prawo.

Przykładowo liczba:

1011101,11001₂

przy zamianie na system szesnastkowy zostaje pogrupowana jako:

0101 1101,1100 1000.

Nie należy grupować całego ciągu od początku, ignorując przecinek, ponieważ zmieniłoby to wartości pozycji. Separator oddziela dodatnie i ujemne potęgi podstawy i stanowi punkt odniesienia dla obu kierunków.

Zera w zapisie liczbowym

Zera stojące przed częścią całkowitą nie zmieniają wartości liczby:

00101₂ = 101₂.

Podobnie zera dopisane na końcu części ułamkowej nie zmieniają wartości:

0,1010₂ = 0,101₂.

Nie można jednak dowolnie usuwać zer znajdujących się wewnątrz liczby ani na początku części ułamkowej. Przykładowo:

0,001₂

nie jest równe:

0,1₂.

Pierwsza liczba ma wartość 1/8, natomiast druga 1/2. Pozycja cyfry jest kluczowa, dlatego usunięcie zer zmienia wartość.

Zastosowanie systemu binarnego w komputerach

Każda informacja przetwarzana przez komputer może zostać przedstawiona jako ciąg bitów. Dotyczy to liczb, tekstu, obrazów, dźwięku, programów i komunikacji sieciowej. Znaczenie bitów zależy od ustalonego formatu.

Litera może być reprezentowana przez określony kod liczbowy, na przykład zgodnie z Unicode. Piksel obrazu może zawierać wartości opisujące natężenie kanałów barwnych. Próbka dźwięku jest liczbą opisującą chwilową wartość sygnału. Instrukcja procesora również jest ciągiem bitów interpretowanym według architektury sprzętu.

Zamiana systemów liczbowych ułatwia zrozumienie, w jaki sposób wartości czytelne dla człowieka są przedstawiane w urządzeniu cyfrowym. Pozwala także analizować maski bitowe, adresy, flagi i operacje logiczne.

Zastosowanie systemu szesnastkowego

System szesnastkowy jest wykorzystywany wszędzie tam, gdzie zapis binarny byłby zbyt długi. Każda cyfra szesnastkowa przedstawia cztery bity, dlatego liczby mogą być zapisywane cztery razy krócej niż w systemie binarnym.

Typowe zastosowania obejmują:

  • zapis adresów pamięci,
  • analizę kodu maszynowego,
  • zapis wartości bajtów,
  • definiowanie kolorów,
  • identyfikatory i sumy kontrolne,
  • adresy IPv6,
  • debugowanie programów.

Kolor w formacie RGB może być zapisany jako sześć cyfr szesnastkowych. Przykładowo #FF0000 oznacza pełną wartość kanału czerwonego i zerową wartość kanałów zielonego oraz niebieskiego. Każda para cyfr reprezentuje liczbę od 0 do 255.

Zapis FF₁₆ = 255₁₀, dlatego wartość FF oznacza maksymalne natężenie ośmiobitowego kanału.

System szesnastkowy w kolorach

Kolor zapisany jako:

#3A7FC2

składa się z trzech par:

3A, 7F i C2.

Pierwsza para określa kanał czerwony, druga zielony, a trzecia niebieski. Przeliczając je na system dziesiętny:

3A₁₆ = 3 · 16 + 10 = 58,
7F₁₆ = 7 · 16 + 15 = 127,
C2₁₆ = 12 · 16 + 2 = 194.

Kolor ma więc wartości RGB:

RGB(58, 127, 194).

Rozumienie zamiany systemów liczbowych umożliwia ręczne interpretowanie i modyfikowanie kodów kolorów stosowanych w projektowaniu stron internetowych oraz grafice komputerowej.

System ósemkowy w uprawnieniach plików

W systemach uniksowych uprawnienia plików mogą być zapisywane za pomocą cyfr ósemkowych. Trzy podstawowe prawa mają wartości binarne:

  • odczyt: 100₂, czyli 4₈,
  • zapis: 010₂, czyli 2₈,
  • wykonanie: 001₂, czyli 1₈.

Łącząc prawa, dodaje się ich wartości. Odczyt i zapis dają:

4 + 2 = 6.

Pełne prawa dają:

4 + 2 + 1 = 7.

Zapis 755 oznacza oddzielne zestawy praw dla właściciela, grupy i pozostałych użytkowników. Pierwsza cyfra 7 odpowiada bitom 111, a cyfry 5 odpowiadają 101.

Jest to praktyczny przykład, w którym zamiana systemu binarnego na ósemkowy upraszcza zapis informacji logicznej.

Adresy IPv4 i zapis binarny

Adres IPv4 składa się z czterech liczb dziesiętnych od 0 do 255. Każda z nich reprezentuje jeden bajt, czyli osiem bitów. Przykładowy adres:

192.168.1.10

można zapisać binarnie:

192 = 11000000,
168 = 10101000,
1 = 00000001,
10 = 00001010.

Pełny zapis:

11000000.10101000.00000001.00001010.

Umiejętność zamiany systemów jest szczególnie przydatna podczas obliczania masek podsieci, adresów sieci i zakresów hostów. Operacje wykonywane na adresach IP mają w istocie charakter binarny, mimo że użytkownik najczęściej widzi zapis dziesiętny.

Zapis szesnastkowy w adresach IPv6

Adresy IPv6 są znacznie dłuższe niż IPv4 i mają 128 bitów. Zapisanie takiego adresu binarnie byłoby mało czytelne, dlatego wykorzystuje się system szesnastkowy.

Przykładowy fragment:

2001:0DB8

każda cyfra szesnastkowa reprezentuje cztery bity. Grupa czterech cyfr przedstawia więc 16 bitów. Dzięki temu pełny adres można zapisać znacznie krócej niż w systemie binarnym.

Znajomość zależności między systemem binarnym i szesnastkowym ułatwia analizowanie zakresów adresów, prefiksów sieciowych oraz struktury adresu IPv6.

Zamiana systemów liczbowych w programowaniu

W wielu językach programowania liczby można zapisywać w różnych podstawach. Przykładowo:

  • zapis dziesiętny: 42,
  • zapis binarny: 0b101010,
  • zapis szesnastkowy: 0x2A.

Wszystkie trzy literały mogą reprezentować tę samą wartość. Programista wybiera format najlepiej odpowiadający zadaniu. Zapis binarny jest wygodny przy analizowaniu pojedynczych bitów, a szesnastkowy podczas pracy z bajtami i maskami.

Operacje bitowe, takie jak AND, OR, XOR i przesunięcia, są łatwiejsze do zrozumienia po zapisaniu liczb binarnie. System szesnastkowy ułatwia natomiast kontrolowanie większych wartości bez tworzenia długich ciągów zer i jedynek.

Algorytm zamiany liczby na dowolną podstawę

Uniwersalny algorytm dla dodatniej liczby całkowitej opiera się na wielokrotnym dzieleniu. Można go zapisać w pseudokodzie:

dopóki liczba > 0:
    reszta = liczba modulo podstawa
    zapisz symbol odpowiadający reszcie
    liczba = liczba div podstawa

odwróć kolejność zapisanych symboli

Działanie modulo zwraca resztę z dzielenia, natomiast div całkowity iloraz. Dla podstaw większych od 10 potrzebna jest tablica symboli, na przykład:

0123456789ABCDEF.

Reszta 10 wskazuje wtedy symbol A, 11 symbol B i tak dalej.

Szczególnym przypadkiem jest liczba zero. Ponieważ pętla nie wykonałaby się ani razu, należy obsłużyć ją oddzielnie i zwrócić symbol 0.

Algorytm zamiany z dowolnej podstawy na dziesiętną

Najwygodniejsza implementacja wykorzystuje schemat Hornera. Dla każdej cyfry, od lewej do prawej, aktualny wynik mnoży się przez podstawę i dodaje wartość kolejnej cyfry:

wynik = 0

dla każdej cyfry:
    wynik = wynik * podstawa + wartość_cyfry

Przykład dla 2AF₁₆:

wynik = 0,
po cyfrze 2: 0 · 16 + 2 = 2,
po cyfrze A: 2 · 16 + 10 = 42,
po cyfrze F: 42 · 16 + 15 = 687.

Algorytm powinien również sprawdzać, czy każda cyfra jest dozwolona dla podanej podstawy. Litera F jest poprawna w systemie szesnastkowym, ale nie w systemie o podstawie 12.

Zamiana między dowolnymi podstawami

Aby zamienić liczbę z podstawy p na podstawę q, można:

  1. przeliczyć liczbę z podstawy p na wartość dziesiętną,
  2. przeliczyć wartość dziesiętną na podstawę q.

W praktyce system pośredni nie musi być dosłownie dziesiętny w pamięci komputera. Chodzi o uzyskanie wartości liczbowej niezależnej od tekstowej reprezentacji.

Przykład zamiany 243₅ na system siódemkowy:

Najpierw system dziesiętny:

243₅ = 2 · 5² + 4 · 5¹ + 3 · 5⁰.

2 · 25 + 4 · 5 + 3 = 50 + 20 + 3 = 73₁₀.

Następnie dzielenie przez 7:

73 : 7 = 10 reszty 3,
10 : 7 = 1 reszty 3,
1 : 7 = 0 reszty 1.

Odczyt od dołu:

133₇.

Zatem:

243₅ = 133₇.

Pokazuje to, że zasady nie ograniczają się do najpopularniejszych systemów 2, 8, 10 i 16.

System trójkowy, piątkowy i inne podstawy

Matematycznie można tworzyć systemy o niemal dowolnej podstawie większej niż 1. System trójkowy wykorzystuje cyfry 0, 1 i 2. System piątkowy używa cyfr od 0 do 4, a system dwunastkowy potrzebuje dwunastu różnych symboli.

Przykładowo liczba 1021₃ oznacza:

1 · 3³ + 0 · 3² + 2 · 3¹ + 1 · 3⁰.

Po obliczeniu:

27 + 0 + 6 + 1 = 34.

Zatem:

1021₃ = 34₁₀.

Aby zamienić 34 na system trójkowy, dzielimy kolejno przez 3:

34 : 3 = 11 reszty 1,
11 : 3 = 3 reszty 2,
3 : 3 = 1 reszty 0,
1 : 3 = 0 reszty 1.

Otrzymujemy ponownie 1021₃.

Wartość pozycyjna w różnych podstawach

Kluczem do całego zagadnienia jest wartość pozycyjna. W liczbie zapisanej w systemie o podstawie p każda pozycja jest p razy większa od pozycji stojącej bezpośrednio po jej prawej stronie.

Dla liczby całkowitej pozycje od prawej mają wartości:

p⁰, p¹, p², p³…

Dla części ułamkowej:

p⁻¹, p⁻², p⁻³…

Dlatego przesunięcie liczby o jedno miejsce w lewo odpowiada pomnożeniu jej przez podstawę. W systemie dziesiętnym przesunięcie przecinka o jedno miejsce daje mnożenie przez 10. W binarnym przesunięcie o jedną pozycję odpowiada mnożeniu przez 2.

Przykładowo:

101₂ = 5₁₀,
1010₂ = 10₁₀.

Dopisanie zera po prawej stronie liczby całkowitej binarnej podwoiło jej wartość. Ta właściwość jest wykorzystywana w operacjach przesunięć bitowych.

Przesunięcia bitowe

Przesunięcie bitów w lewo o jedną pozycję zwykle odpowiada pomnożeniu dodatniej liczby całkowitej przez 2, o ile nie nastąpi przepełnienie. Przesunięcie w prawo odpowiada dzieleniu całkowitemu przez 2.

Przykład:

00101100₂ = 44₁₀.

Po przesunięciu w lewo:

01011000₂ = 88₁₀.

Po przesunięciu pierwotnej liczby w prawo:

00010110₂ = 22₁₀.

Przesunięcia są szybkim mechanizmem sprzętowym i często występują w programowaniu niskopoziomowym. Ich zrozumienie wynika bezpośrednio z pozycyjnej budowy systemu binarnego.

Dlaczego system binarny jest wygodny dla elektroniki?

Urządzenia elektroniczne muszą niezawodnie rozróżniać zapisane stany. System z dwoma stanami jest odporniejszy na niewielkie zakłócenia niż układ wymagający dokładnego rozpoznawania dziesięciu poziomów napięcia.

Dwa stany mogą reprezentować:

  • napięcie niskie i wysokie,
  • tranzystor wyłączony i włączony,
  • brak ładunku i obecność ładunku,
  • stan fałszywy i prawdziwy.

Logika binarna dobrze współpracuje z algebrą Boole’a, która opisuje operacje logiczne. Dzięki temu można budować bramki, sumatory, pamięci, procesory i inne elementy cyfrowe.

System dziesiętny pozostaje wygodniejszy dla człowieka, dlatego urządzenia stale wykonują konwersje między formatami wewnętrznymi a zapisem prezentowanym użytkownikowi.

Historia systemów liczbowych

Ludzkość stosowała wiele sposobów zapisywania liczb. Nie wszystkie były pozycyjne. W systemie rzymskim wartość symbolu zależy częściowo od jego położenia, ale nie działa on tak regularnie jak system dziesiętny czy binarny.

Rozwój pozycyjnego systemu dziesiętnego oraz upowszechnienie cyfry zero znacznie ułatwiły wykonywanie działań. System ten dotarł do Europy za pośrednictwem świata arabskiego, dlatego cyfry używane obecnie nazywa się arabskimi, choć ich wcześniejsze korzenie wiążą się z Indiami.

System binarny został matematycznie opisany na długo przed powstaniem komputerów elektronicznych. Jego praktyczne znaczenie ogromnie wzrosło wraz z rozwojem logiki formalnej, elektroniki i maszyn cyfrowych.

System szesnastkowy stał się użyteczny jako zwarty sposób prezentowania bitów. Nie zastępuje systemu binarnego wewnątrz urządzenia, lecz jest jego czytelniejszą reprezentacją dla człowieka.

Zamiana systemów liczbowych w zadaniach szkolnych

W zadaniach szkolnych najczęściej pojawiają się polecenia:

  • zamień liczbę binarną na dziesiętną,
  • przedstaw liczbę dziesiętną w systemie dwójkowym,
  • zamień liczbę szesnastkową na binarną,
  • wykonaj działanie w określonym systemie,
  • sprawdź poprawność podanej reprezentacji.

Najlepszą strategią jest zapisanie wszystkich etapów. Przy zamianie na system dziesiętny warto rozpisać potęgi. Przy zamianie z dziesiętnego należy przygotować kolumnę z ilorazami i resztami. W konwersjach binarno-szesnastkowych dobrze jest oddzielić grupy odstępami.

Dokładny zapis zmniejsza liczbę pomyłek i pozwala uzyskać punkty za poprawną metodę nawet wtedy, gdy końcowy wynik zawiera drobny błąd rachunkowy.

Przykład pełnej zamiany liczby dziesiętnej

Zamieńmy liczbę 202₁₀ na system binarny, ósemkowy i szesnastkowy.

System binarny

Dzielenie przez 2:

202 : 2 = 101 reszty 0,
101 : 2 = 50 reszty 1,
50 : 2 = 25 reszty 0,
25 : 2 = 12 reszty 1,
12 : 2 = 6 reszty 0,
6 : 2 = 3 reszty 0,
3 : 2 = 1 reszty 1,
1 : 2 = 0 reszty 1.

Odczyt od dołu:

11001010₂.

System ósemkowy

Dzielenie przez 8:

202 : 8 = 25 reszty 2,
25 : 8 = 3 reszty 1,
3 : 8 = 0 reszty 3.

Wynik:

312₈.

System szesnastkowy

Dzielenie przez 16:

202 : 16 = 12 reszty 10,
12 : 16 = 0 reszty 12.

Reszta 10 to A, a 12 to C:

CA₁₆.

Ostatecznie:

202₁₀ = 11001010₂ = 312₈ = CA₁₆.

Przykład pełnej zamiany liczby binarnej

Rozważmy:

111010110₂.

Na system dziesiętny

Jedynki odpowiadają wartościom:

2⁸ + 2⁷ + 2⁶ + 2⁴ + 2² + 2¹.

Czyli:

256 + 128 + 64 + 16 + 4 + 2 = 470.

Zatem:

111010110₂ = 470₁₀.

Na system ósemkowy

Grupowanie po trzy:

111 010 110.

Odpowiedniki:

7 2 6.

Wynik:

726₈.

Na system szesnastkowy

Grupowanie po cztery od prawej:

0001 1101 0110.

Odpowiedniki:

1 D 6.

Wynik:

1D6₁₆.

Ostatecznie:

111010110₂ = 470₁₀ = 726₈ = 1D6₁₆.

Przykład liczby szesnastkowej

Zamieńmy:

4E9₁₆.

Na system dziesiętny

4 · 16² + 14 · 16 + 9.

4 · 256 + 224 + 9 = 1024 + 224 + 9 = 1257.

Na system binarny

4 = 0100,
E = 1110,
9 = 1001.

Otrzymujemy:

010011101001₂,

czyli po pominięciu początkowego zera:

10011101001₂.

Na system ósemkowy

Grupujemy zapis binarny po trzy:

010 011 101 001.

Odpowiedniki:

2 3 5 1.

Zatem:

4E9₁₆ = 1257₁₀ = 10011101001₂ = 2351₈.

Przybliżanie ułamków

Jeżeli rozwinięcie w systemie docelowym jest nieskończone, należy ustalić liczbę cyfr po przecinku. Proces mnożenia można zatrzymać po osiągnięciu wymaganej dokładności. Otrzymany zapis jest wtedy przybliżeniem.

Przykładowo konwersja 0,1₁₀ na system binarny prowadzi do rozwinięcia:

0,0001100110011…₂.

Ciąg 0011 powtarza się. Jeśli chcemy zapisać osiem bitów po przecinku, możemy użyć przybliżenia:

0,00011010₂

po odpowiednim zaokrągleniu albo:

0,00011001₂

po zwykłym obcięciu.

Należy zaznaczyć, czy wynik jest dokładny, czy przybliżony. Przy obliczeniach technicznych różnica między obcięciem i zaokrągleniem może mieć znaczenie.

Dokładność reprezentacji komputerowej

Komputery mają ograniczoną liczbę bitów przeznaczonych na zapis wartości. Z tego powodu nie mogą przechowywać dowolnie długich rozwinięć. Liczby zmiennoprzecinkowe są reprezentowane za pomocą znaku, wykładnika i mantysy.

Ograniczona precyzja powoduje, że działania pozornie proste mogą dawać wyniki minimalnie różniące się od wartości oczekiwanych. Przykładowo suma 0,1 i 0,2 może wewnętrznie nie być dokładnie równa 0,3, ponieważ obie liczby mają nieskończone rozwinięcia binarne.

Nie oznacza to błędu programu ani procesora. Jest to konsekwencja zamiany między systemem dziesiętnym i skończoną reprezentacją binarną. W zastosowaniach finansowych często używa się specjalnych typów dziesiętnych albo przechowuje wartości jako całkowitą liczbę najmniejszych jednostek, na przykład groszy.

Kalkulator a zamiana systemów liczbowych

Kalkulatory naukowe i programistyczne często umożliwiają automatyczne przełączanie między systemami BIN, OCT, DEC i HEX. Są użyteczne przy sprawdzaniu wyników, ale nie zastępują rozumienia metod.

Przed zaakceptowaniem wyniku warto sprawdzić:

  • czy ustawiono właściwy system wejściowy,
  • czy litery zostały wpisane prawidłowo,
  • czy liczba jest interpretowana jako dodatnia lub ze znakiem,
  • jaką szerokość bitową przyjmuje kalkulator,
  • czy część ułamkowa jest obsługiwana.

W trybie programistycznym ciąg szesnastkowy FF może zostać pokazany jako 255 albo -1, zależnie od ustawionej szerokości i interpretacji znaku.

Jak szybko nauczyć się zamiany systemów liczbowych?

Najskuteczniejsza nauka powinna rozpoczynać się od zrozumienia potęg. Warto dobrze znać podstawowe potęgi liczby 2 do co najmniej 2¹⁰:

1, 2, 4, 8, 16, 32, 64, 128, 256, 512 i 1024.

Przydatna jest także znajomość odpowiedników czterobitowych dla cyfr szesnastkowych. Dzięki temu zamiana między systemem binarnym i szesnastkowym staje się niemal automatyczna.

Dobrze jest ćwiczyć w następującej kolejności:

  1. liczby binarne na dziesiętne,
  2. liczby dziesiętne na binarne,
  3. konwersje binarno-szesnastkowe,
  4. system ósemkowy,
  5. części ułamkowe,
  6. nietypowe podstawy.

W każdym ćwiczeniu warto wykonywać sprawdzenie odwrotne. Dzięki temu uczeń nie tylko poznaje wynik, lecz także utrwala obie metody przeliczania.

Skrócona tabela wartości

Przy nauce przydatna jest tabela wartości od 0 do 15:

DziesiętnieBinarnieÓsemkowoSzesnastkowo00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D14111016E15111117F

Nie trzeba uczyć się całej tabeli mechanicznie, ale częste korzystanie z niej pomaga szybko rozpoznawać czterobitowe kombinacje.

Praktyczna metoda rozwiązywania zadań

Przed rozpoczęciem obliczeń należy ustalić:

Jaki jest system źródłowy?
Jaki jest system docelowy?
Czy liczba zawiera część ułamkową?
Czy można zastosować grupowanie bitów?

Jeżeli systemem docelowym jest dziesiętny, wykorzystuje się sumę potęg albo schemat Hornera. Jeżeli źródłem jest system dziesiętny, część całkowitą dzieli się przez podstawę, a ułamkową mnoży przez podstawę.

Jeżeli zamiana zachodzi między systemami 2, 8 i 16, najczęściej najlepiej użyć grupowania. Przechodzenie przez system dziesiętny byłoby poprawne, ale wydłużyłoby obliczenia.

Na końcu warto sprawdzić, czy użyte cyfry są legalne w systemie wynikowym i czy wartość po konwersji odwrotnej zgadza się z liczbą początkową.

Zamiana systemów liczbowych a logika matematyczna

Zrozumienie systemów pozycyjnych rozwija umiejętność rozkładania problemu na mniejsze części. Każda liczba jest sumą cyfr pomnożonych przez odpowiednie potęgi podstawy. Złożony zapis można więc sprowadzić do prostych działań.

Temat pokazuje również, że symbole nie mają stałej wartości poza kontekstem. Zapis 10 nie zawsze oznacza dziesięć. Jego wartość zależy od podstawy. W systemie o podstawie p zapis 10 zawsze oznacza właśnie p.

Ta obserwacja pomaga odróżnić liczbę jako abstrakcyjną wartość od jej reprezentacji. Liczba może być zapisana na wiele sposobów, ale nie zmienia się przez zmianę symboli. Jest to ważne zarówno w matematyce, jak i informatyce, gdzie te same dane mogą mieć różne formaty.

Znaczenie zamiany systemów liczbowych

Zamiana systemów liczbowych jest podstawowym narzędziem łączącym matematykę z technologią cyfrową. Umożliwia przechodzenie między zapisem wygodnym dla człowieka a reprezentacją używaną przez maszyny. Pomaga rozumieć budowę danych, sposób zapisywania kolorów, adresów, znaków, instrukcji i uprawnień.

Najważniejsze zasady można sprowadzić do kilku reguł. Zamiana na system dziesiętny polega na wykorzystaniu potęg podstawy. Zamiana z systemu dziesiętnego wymaga dzielenia części całkowitej i mnożenia części ułamkowej przez podstawę docelową. Między systemem binarnym a ósemkowym grupuje się bity po trzy, natomiast między binarnym a szesnastkowym po cztery.

Opanowanie tych metod nie wymaga zapamiętywania wielu niezależnych wzorów. Wszystkie wynikają z pozycyjnej budowy liczb. Gdy rozumie się rolę podstawy, potęg i wartości miejsca, można samodzielnie przeliczać liczby w systemie dwójkowym, ósemkowym, dziesiętnym, szesnastkowym oraz w dowolnej innej podstawie.

Zamiana systemów liczbowych jest więc czymś więcej niż szkolnym ćwiczeniem. Stanowi fundament informatycznego sposobu reprezentowania informacji i pomaga zrozumieć, jak urządzenia cyfrowe zapisują oraz interpretują otaczający nas świat.