// Schreiben Sie eine Funktion, welche eine Binärzahl in die
// entsprechende Dezimalzahl umwandelt. Die Binärzahl soll
// dabei wie folgt deklariert und initialisiert werden:
//
// int binNumber = 1011;
// static int toDecNumber (int binNumber) {
// lokale Variablen...
// Anweisungen...
// }
public class Assignment2 {
public static void main(String[] args) {
int binNumber = 1011;
System.out.println(toDecNumber1(binNumber));
System.out.println(toDecNumber2(binNumber));
System.out.println(toDecNumber3(binNumber));
System.out.println(toDecNumber4(binNumber));
}
// With using Math
static int toDecNumber1(int number) {
int decNumber = 0,
x = 0;
while (number > 0) {
decNumber += (number % 10) * (int) Math.pow(2,x++);
number /= 10;
}
return decNumber;
}
// Without using Math (left shift = 2^x)
static int toDecNumber2(int binNumber) {
int decimal = 0,
x = 0;
while (binNumber > 0) {
decimal += (binNumber % 10) * 1 << x++;
binNumber /= 10;
}
return decimal;
}
// Lazy String Conversion
static int toDecNumber3(int binNumber) {
return Integer.parseInt(Integer.toString(binNumber),2);
}
// Not using loops, but recursion and overloading instead.
static int toDecNumber4(int binNumber) {
return toDecNumber4(binNumber,0);
}
static int toDecNumber4(int binNumber, int x) {
return binNumber > 0 ? ( (binNumber%10) * 1 << x++ ) + toDecNumber4(binNumber/10,x) : 0;
}
}