I_P_W14_M09_Java Konwersja liczb z systemu dwójkowego na dziesiętny w języku Java
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.
Słownik
element składni w określonym języku programowania, który w wyniku wywołania podprogramu zostaje utożsamiony (skojarzony) z określonym parametrem podprogramu
bit o najmniejszej wadze (najmniej istotny), zajmujący miejsce najdalej po prawej stronie liczby
element składni języka, który jest definiowany przy deklaracji metody lub funkcji; deklarujemy go w nagłówku podprogramu; umożliwia komunikację pomiędzy podprogramem (funkcją/metodą), a programem go wywołującym
Przypomnijmy metodę konwersji całkowitych liczb binarnych do postaci dziesiętnej. Posłużymy się przykładem, dzięki któremu łatwiej nam będzie przełożyć algorytm na program w języku Java.
Zapiszemy liczbę 10111Indeks dolny (2)(2) w systemie dziesiętnym:
Oto rozwiązanie zadania:

Kolejne bity liczby dwójkowej mnożyliśmy przez odpowiadające im wagi, zaczynając od najmniej znaczącej cyfry (znajdującej się skrajnie po prawej stronie). Poszczególne wagi wynosiły: 2Indeks górny 00, 2Indeks górny 11, 2Indeks górny 22, 2Indeks górny 33, 2Indeks górny 44... (czyli były zwiększającymi się o 1 potęgami liczby 2). Następnie zsumowaliśmy otrzymane iloczyny i uzyskaliśmy dziesiętną postać liczby binarnej:
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.
Słownik
element składni w określonym języku programowania, który w wyniku wywołania podprogramu zostaje utożsamiony (skojarzony) z określonym parametrem podprogramu
bit o najmniejszej wadze (najmniej istotny), zajmujący miejsce najdalej po prawej stronie liczby
element składni języka, który jest definiowany przy deklaracji metody lub funkcji; deklarujemy go w nagłówku podprogramu; umożliwia komunikację pomiędzy podprogramem (funkcją/metodą), a programem go wywołującym
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.