Matura z informatyki - rozwiązania zadań

Algorytmy

Zamiana liczby dziesiętnej na dowolny system liczbowy

Wstęp

Powszechnie stosowanym systemem liczbowym jest system dziesiętny, jednak w różnych dziedzinach nauki i techniki stosuje się również inne systemy, takie jak binarny (używany w komputerach), ósemkowy czy szesnastkowy (często używane w programowaniu). Istnieje wiele innych systemów liczbowych, które są używane w zależności od konkretnego zastosowania.

Matematyczne tło konwersji systemów liczbowych

Aby zrozumieć, jak przebiega proces zamiany liczby dziesiętnej na dowolny system liczbowy, warto najpierw przyjrzeć się temu zagadnieniu od strony matematycznej.

Podstawową koncepcją, na której opiera się idea systemów liczbowych, jest pozycyjny system liczbowy. W systemie dziesiętnym, który jest nam najbardziej znany, każda cyfra w liczbie reprezentuje pewną wielokrotność dziesięciu. Na przykład, w liczbie 1234, cyfra 1 reprezentuje 1000 (czyli 10^3), cyfra 2 reprezentuje 200 (10^2), cyfra 3 reprezentuje 30 (10^1), a cyfra 4 reprezentuje 4 (10^0).

Podobnie jest w innych systemach liczbowych, tylko zamiast dziesiątek mamy do czynienia z innymi liczbami. W systemie binarnym mamy do czynienia z dwójkami, w systemie ósemkowym z ósemkami itd.

Przebieg konwersji z systemu dziesiętnego na inny system liczbowy polega na podzieleniu liczby dziesiętnej przez bazę systemu docelowego i zapisaniu reszty. Następnie operację dzielenia powtarzamy dla wyniku z poprzedniego dzielenia, aż do momentu, kiedy wynik podzielenia będzie równy zero. Cyfry w nowym systemie liczbowym to kolejne reszty zapisane w odwrotnej kolejności.

Ważne jest jednak pamiętać, że powyższy opis dotyczy przypadku, gdy baza systemu liczbowego jest mniejsza lub równa 10. W przypadku systemów liczbowych o bazie większej od 10, jak na przykład system szesnastkowy, pojawiają się dodatkowe symbole reprezentujące liczby od 10 do bazy systemu minus jeden (w systemie szesnastkowym są to litery od A do F).

Zrozumienie tej koncepcji jest kluczowe do zrozumienia działania algorytmów konwersji systemów liczbowych.

Komputerowa reprezentacja algorytmu

Poniżej pokażemy pseudokod oraz implementacje w C++ i Pythonie.

Na początek pseudokod:

Przyjrzyjmy się teraz szczegółowo każdemu kroku tego algorytmu.

  1. Funkcja ZamianaNaSystemLiczbowy(liczba dziesiętna, baza systemu): Ta linia definiuje naszą funkcję, która przyjmuje dwa argumenty: liczbę dziesiętną, którą chcemy przekształcić, i bazę systemu, na który chcemy przekształcić tę liczbę.

  2. Jeżeli liczba dziesiętna = 0: Zwróć pusty ciąg Nasza funkcja najpierw sprawdza, czy podana liczba dziesiętna wynosi 0. Jeśli tak, to funkcja natychmiast zwraca pusty ciąg, ponieważ zero w każdym systemie liczbowym jest nadal zerem.

  3. wynik = pusty ciąg Następnie inicjalizujemy zmienną wynik jako pusty ciąg. Będzie to miejsce, w którym będziemy przechowywać cyfry naszej przekształconej liczby.

  4. dopóki liczba dziesiętna > 0: Teraz zaczynamy główną pętlę naszego algorytmu, która będzie kontynuowana, dopóki nasza liczba dziesiętna jest większa od zera.

  5. reszta = liczba dziesiętna mod baza systemu W każdym obiegu pętli obliczamy resztę z dzielenia naszej liczby dziesiętnej przez bazę systemu. Ta reszta to właśnie cyfra, którą dodamy do naszej końcowej liczby.

  6. liczba dziesiętna = liczba dziesiętna / baza systemu Następnie dzielimy naszą liczbę dziesiętną przez bazę systemu (bez reszty), zastępując starą liczbę dziesiętną.

  7. dopisz resztę do wynik Następnie dodajemy naszą obliczoną resztę do zmiennej wynik. Pamiętajmy, że reszta dodawana jest na końcu ciągu.

  8. odwróć ciąg wynik Po zakończeniu pętli nasz ciąg wynik będzie w odwrotnej kolejności (ponieważ dodawaliśmy reszty na końcu ciągu), więc odwracamy go, aby otrzymać poprawną liczbę w nowym systemie liczbowym.

  9. zwróć wynik Na koniec zwracamy naszą przekształconą liczbę jako wynik naszej funkcji.

Algorytm przedstawiony za pomocą funkcji języka C++:

I jeszcze implementacja w Pythonie:

Podsumowanie

Tak działa nasz algorytm konwersji liczby dziesiętnej na dowolny system liczbowy. To proste podejście ale efektywne, działające na podstawie dzielenia z resztą, które jest podstawowym matematycznym mechanizmem stojącym za konwersją systemów liczbowych. Kluczowym elementem tego procesu jest ciągłe dzielenie liczby dziesiętnej przez bazę docelowego systemu liczbowego i zapisywanie reszty z tego dzielenia. Reszty te, po odwróceniu kolejności, tworzą reprezentację liczby dziesiętnej w nowym systemie liczbowym. Pamiętaj jednak, że powyższy algorytm działa poprawnie dla systemów o bazie 10 lub mniejszej. Dla systemów o większych bazach, takich jak system szesnastkowy, konieczne byłoby wprowadzenie dodatkowych symboli dla liczb od 10 wzwyż.

© 2023 MaturaInformatyka.pl || Kontakt: admin(malpa)maturainformatyka.pl

Search