public class Binear{
public static void main (String [] args) {
int binaer = 11111;
int zehner = 0;
int ergebnis = 0;
int i = 0;
if (zehner == 0) { // Guckt ob er von Binär in Dezimal rechnen soll oder umgekehrt.
int speicher = 1;
int binaerzwei = binaer; /* Deklariert eine zweite Binaerzahl, die "kaputt" gerechnet werden kann*/
while (binaerzwei >= 1) {
binaerzwei = binaerzwei / 10; /* 1. While. Er rechnet aus wieviele Stellen unsere Binaerzahl hat. In dem Fall 5. i ist nun 5 */
i++; }
while (i > 1) { /* Er rechnet i wieder runter während er den Speicher verdoppelt.
Bei dem Schritt fällt mir auf, dass diese While zu viel ist, sieh schadet aber auch nicht. */
i = i - 1;
speicher = speicher * 2;
}
while (speicher >= 1) {
ergebnis = speicher * binaer % 10 + ergebnis; /* Sinn der ersten beiden Whiles wird hoffentlich jetzt klar. Ich Nehme Speicher (16) und multipliziere dies mit der letzten Ziffer von der Binaerzahl ( "1101 % 10; sprich 1101 durch 10 == Rest 1 und diese 1 wird mit 16 multipliziert. Das ganze dann noch mit Ergebnis addiert, da es ja mehrer Durchgänge gibt und die ersten nicht überschireven werden sollen.
Der Trick hierbei ist (und soweit ich es verstanden habe bei deinem Lösungsvorschlag auch), dass wenn die letzte Ziffer 0 ist er mit 0 multipliziert und auch nichts addiert wird.*/
speicher = speicher / 2; /* Am Ende der while wird speicher halbiert, weil bei der 2. Stelle ja nur noch mit 8 multipliziert werden soll. */
binaer = binaer / 10; /* Durch 10 damit ich an die nächste Ziffer rankomme. Da binaer == int wird komma nicht beachtet ( 1101 / 10 == 110 <> 110,1 )
}
System.out.println (ergebnis);
}
else {
for (int speicher = 0; zehner > 0; zehner = zehner / 2) {
ergebnis = 0;
ergebnis = zehner % 2;
System.out.print (ergebnis);
}
}
}
}
Hoffe du verstehst mein Prog / Prob jetzt und kannst mir vorallem bei meinem Lösungsvorschlag helfen und mir nicht einfach die Musterlösung geben
Wäre echt Super
MfG
DTHDdorf