Realizacja algorytmu w języku Java

W tej sekcji wykorzystamy przedstawiony w e‑materiale Konwersja liczb z systemu szesnastkowego na binarnyPWE3t8GeyKonwersja liczb z systemu szesnastkowego na binarny dwuetapowy algorytm, którego zadaniem będzie konwersja liczby szesnastkowej na liczbę w systemie binarnym. Rozwiązanie zaimplementujemy w języku Java.

Działanie programu przetestujemy dla przykładowej liczby szesnastkowej: BF3Indeks dolny (16).

Specyfikacja:

Dane:

  • liczbaSzesnastkowa – łańcuch znaków, liczba, którą należy przekonwertować, podana w systemie szesnastkowym

Wynik:

Program wyświetla wynik konwersji, czyli liczbę zapisaną w systemie dwójkowym.

Implementację rozpoczniemy od napisania funkcji, która konwertuje liczbę szesnastkową na dziesiętną. Nazwijmy ją konwertujSzesnastkowaNaDziesietna(). Funkcja ta będzie przyjmować jeden parametr, czyli liczbę szesnastkową zapisaną jako łańcuch znaków.

Linia 1. public static int konwertujSzesnastkowaNaDziesietna otwórz nawias okrągły String liczbaSzesnastkowa zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. return Integer kropka parseInt otwórz nawias okrągły liczbaSzesnastkowa przecinek 16 zamknij nawias okrągły średnik. Linia 3. zamknij nawias klamrowy.

Dzięki funkcjom wbudowanym w język Java konwersja z systemu szesnastkowego do dziesiętnego może odbyć się przy użyciu pojedynczej linii kodu.

Używamy do tego funkcji parseInt(). Przyjmuje ona dwa parametry - pierwszym z nich jest liczba zapisana jako ciąg znaków, a drugim podstawa systemu, z którego chcemy dokonać konwersji do systemu dziesiętnego.

Zakres argumentów dla typu int jest ograniczony i wynosi od -2147483648 do 2147483647.

Implementujemy drugą funkcję, która przekonwertuje otrzymaną liczbę z systemu dziesiętnego do systemu docelowego, czyli binarnego. Jedynym parametrem, jaki będzie przyjmować, jest dziesiętna liczba całkowita.

Linia 1. public static String konwertujDziesietnaNaBinarna otwórz nawias okrągły int liczbaDziesietna zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. String wynik znak równości cudzysłów cudzysłów średnik. Linia 3. int reszta znak równości 0 średnik. Linia 5. if otwórz nawias okrągły liczbaDziesietna znak równości znak równości 0 zamknij nawias okrągły return cudzysłów 0 cudzysłów średnik. Linia 7. while otwórz nawias okrągły liczbaDziesietna zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 8. reszta znak równości liczbaDziesietna procent 2 średnik. Linia 9. liczbaDziesietna znak równości liczbaDziesietna prawy ukośnik 2 średnik. Linia 10. wynik znak równości reszta plus wynik średnik. Linia 11. zamknij nawias klamrowy. Linia 13. return wynik średnik. Linia 14. zamknij nawias klamrowy.

Konwersji dokonujemy poprzez dodanie („doklejanie”) do zmiennej wynik kolejnych reszt z dzielenia konwertowanej liczby przez dwa. To właśnie dlatego funkcja zwraca łańcuch znaków String.

Zobaczmy cały kod programu.

Linia 1. public class SzesnastkowaNaBinarna otwórz nawias klamrowy. Linia 2. public static int konwertujSzesnastkowaNaDziesietna otwórz nawias okrągły String liczbaSzesnastkowa zamknij nawias okrągły otwórz nawias klamrowy. Linia 3. return Integer kropka parseInt otwórz nawias okrągły liczbaSzesnastkowa przecinek 16 zamknij nawias okrągły średnik. Linia 4. zamknij nawias klamrowy. Linia 6. public static String konwertujDziesietnaNaBinarna otwórz nawias okrągły int liczbaDziesietna zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. String wynik znak równości cudzysłów cudzysłów średnik. Linia 8. int reszta znak równości 0 średnik. Linia 10. if otwórz nawias okrągły liczbaDziesietna znak równości znak równości 0 zamknij nawias okrągły return cudzysłów 0 cudzysłów średnik. Linia 12. while otwórz nawias okrągły liczbaDziesietna zamknij nawias ostrokątny 0 zamknij nawias okrągły otwórz nawias klamrowy. Linia 13. reszta znak równości liczbaDziesietna procent 2 średnik. Linia 14. liczbaDziesietna znak równości liczbaDziesietna prawy ukośnik 2 średnik. Linia 15. wynik znak równości reszta plus wynik średnik. Linia 16. zamknij nawias klamrowy. Linia 18. return wynik średnik. Linia 19. zamknij nawias klamrowy. Linia 21. public static void main otwórz nawias okrągły String otwórz nawias kwadratowy zamknij nawias kwadratowy args zamknij nawias okrągły otwórz nawias klamrowy. Linia 22. String liczbaHeks znak równości cudzysłów BF3 cudzysłów średnik. Linia 23. int liczba znak równości konwertujSzesnastkowaNaDziesietna otwórz nawias okrągły liczbaHeks zamknij nawias okrągły średnik. Linia 25. System kropka out kropka println otwórz nawias okrągły konwertujDziesietnaNaBinarna otwórz nawias okrągły liczba zamknij nawias okrągły zamknij nawias okrągły średnik. Linia 26. zamknij nawias klamrowy. Linia 27. zamknij nawias klamrowy.

II sposób konwersji

W kolejnej sekcji zastosujemy bazy skojarzonebaza skojarzonabazy skojarzone. Metoda ta umożliwia bezpośrednią konwersję liczby z systemu szesnastkowego na binarny. Wykorzystuje ona fakt, że podstawę systemu szesnastkowego, czyli liczbę 16, uzyskujemy przez podniesienie liczby 2 do czwartej potęgi. Własność tę możemy użyć także przy konwersji części ułamkowej liczby.

Słownik

baza skojarzona
baza skojarzona

podstawa jednego systemu liczbowego uzyskana przez podniesienie do potęgi podstawy drugiego