Ostatnio nie pisuję za dużo na blogu z prostej przyczyny: nie mam czasu. A to dlatego, że „zachciało mi się” studiów podyplomowych. Co drugi weekend zajęty i nie ma kiedy pisać
Jako iż na studiach wałkujemy Javę, to pomyślałem sobie, że „dla sportu” strzelę sobie jakiś prosty kod. Zrobiłem przelicznik liczb całkowitych w systemie dziesiętnym na binarny metodą dzielenia przez 2 i zapamiętywania reszty z dzielenia. Odwracamy kolejność zapamiętanych reszt i powstaje nam piękna liczba binarna
Przykładowe użycie dla liczby 13:
Wpisz liczbe calkowita do zamiany na system dwojkowy
13
Dziele 13 przez 2 wyszlo 6, reszty 1
Dziele 6 przez 2 wyszlo 3, reszty 0
Dziele 3 przez 2 wyszlo 1, reszty 1
Dziele 1 przez 2 wyszlo 0, reszty 1
Szukana liczba w systemie binarnym to 1101
Poniżej podaję cały kod źródłowy (nie śmiać się z ilości dokumentacji), może komuś się przyda.
import java.io.*;
public class PrzelicznikBinarny {
/**
* Metoda zamienia podana liczbe calkowita na binarna.
* @param liczba - liczba calkowita do zamiany na binarna
* @return zwraca ciag zawierajacy wyniki kolejnych dzielen liczb i wynik koncowy
*/
static String liczBinarna (int liczba) {
// inicjalizacja zmiennych
String ciag = "";
String binarna = "";
int reszta;
// petla z duzym "zapasem" wykonan
for (int i=1 ; i<1000 ; i++) {
// licz reszte z dzielenia przez 2
reszta = liczba % 2;
// konstruuj ciag opisowy
ciag += "Dziele " + liczba + " przez 2";
// jezeli reszta wyszla 1 to zmniejsz cala liczbe o 1
if (reszta == 1) liczba--;
// dzielenie liczby
liczba = liczba / 2;
// cd ciagu opisowego
ciag += " wyszlo " + liczba + ", reszty " + reszta + "\n";
// dodaj reszte do ciagu wynikowego
binarna += reszta;
// wyjscie z petli jezeli nie ma juz czego dzielic
if (liczba == 0) break;
}
// odwrocenie ciagu wynikowego
StringBuffer odwroc = new StringBuffer(binarna).reverse();
// sklej ciag opisowy z wynikowym i wypluj
return ciag + "\nSzukana liczba w systemie binarnym to " + odwroc;
}
// prosta metoda pytajaca o wpisanie liczby z klawiatury
public static void main(String[] args) {
try {
System.out.println("Wpisz liczbe calkowita do zamiany na system dwojkowy");
int calkowita;
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
calkowita = Integer.parseInt(in.readLine());
if (calkowita < 0) {
System.out.println("Wpisz liczbe dodatnia");
} else {
System.out.println(liczBinarna(calkowita));
}
}
catch (IOException e) {
}
}
}
