Implementacja algorytmu
Realizacja algorytmu w języku Java
Rozpoczniemy od instrukcji, dzięki którym użytkownik poda liczbę do przekształcenia. Skorzystamy z wbudowanej klasy Scanner oraz strumienia wejścia System.in:
Następnie zadeklarujemy funkcję konwertujBinDec(). Właśnie ona będzie odpowiadać za realizację omówionego algorytmu.
Funkcja zwróci wartość typu int, a jako parametr przyjmie ciąg znaków (String) liczbaBin – jest to liczba dwójkowa traktowana jako tekst.
Nie bez powodu podajemy liczbę do przekształcenia w postaci ciągu znaków, a nie zmiennej typu całkowitego. Tak jest po prostu wygodniej, nie musimy dokonywać jej konwersji do łańcucha znaków. Dodatkowo, podczas konwersji chcemy znać poszczególne cyfry (bity), a nie wartość całej liczby dwójkowej:
Omówmy poszczególne instrukcje.
W liniach 2., 3. oraz 4. deklarujemy trzy zmienne typu całkowitego: wynik, waga oraz bit:
wynik– rezultat przekształcenia liczby dwójkowej zwracany przez funkcjękonwertujBinDec();przechowuje ona wartość konwertowanej liczby w systemie dziesiętnym;waga– przyjmuje wartości kolejnych wag bitów, czyli potęg liczby 2 (jako wartość początkową przypisujemy jej 1, ponieważ 2Indeks górny 00 = 1);bit– przechowuje wartości kolejnych bitów zmiennejliczbaBin, uzyskane dzięki funkcjigetNumericValue(), która służy do rzutowania zmiennej typucharnaint.
Wewnątrz pętli for zapisujemy instrukcje służące do wyznaczenia wartości dziesiętnej liczby:
bit = Character.getNumericValue(liczbaBin.charAt(i))– zamiana tekstu na wartość liczbową;wynik = wynik + bit * waga– sumowanie kolejnych iloczynów częściowych;waga = waga * 2– obliczanie wagi następnego elementu (w wyniku mnożenia bieżącej wartości wagi przez 2).
Ostatnim krokiem jest wywołanie funkcji konwertujBinDec() i wyświetlenie wyniku:
A oto cały kod programu:
Konwersja części ułamkowej z systemu dwójkowego do systemu dziesiętnego
Sposób przekształcania części ułamkowej liczby binarnej do postaci dziesiętnej jest bardzo podobny do tego, który przed chwilą zastosowaliśmy. Zmieniają się wartości wag odpowiadających każdej cyfrze dwójkowej. Są nimi: 2Indeks górny -1-1, 2Indeks górny -2-2, 2Indeks górny -3-3... , czyli odwrotności kolejnych potęg liczby 2. Przeciwny jest ponadto kierunek odczytywania bitów i obliczania iloczynów cząstkowych: posuwamy się od strony lewej do prawej.
Jeszcze raz dokonajmy konwersji, zajmując się częścią ułamkową liczby dwójkowej:

Mnożyliśmy bity (zaczynając po przecinku od strony lewej i kierując się ku prawej) przez wagi przypisane poszczególnym pozycjom, czyli kolejne odwrotności potęgi liczby 2 (pierwszą była 2Indeks górny -1-1). Po zsumowaniu iloczynów cząstkowych otrzymaliśmy ułamek zapisany w systemie dziesiętnym.
W kolejnej sekcji zaimplementujemy algorytm konwersji części ułamkowej z systemu dwójkowego do postaci dziesiętnej w języku Java.
Zapoznaj się z filmem. Przedstawiono w nim dwie metody konwersji liczby całkowitej zapisanej w systemie dwójkowym na postać dziesiętną. Pierwszą z nich już znasz, druga opiera się na schemacie Hornera.

Film dostępny pod adresem /preview/resource/R7RpCNWMHH1na
Film nawiązujący do algorytmu zmiany liczby bin na dec.