PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java Decimal to binary



SarthakBhatt
26.07.2022, 13:28
Ich muss Hausaufgaben für die binäre Konversation machen. Ich sehe Scaler Topics (https://www.scaler.com/topics/binary-to-decimal-in-java/) und GFG, um das Thema besser zu verstehen. Ich habe diesen Code:


int num = 0;
int temp = 0;

Scanner sc = new Scanner(System.in);
num = sc.nextInt();

//System.out.print(""+ num%2+ (num%2)%2);
while(num != 0) {
temp = num;
System.out.print(""+(int) temp % 2);
num = num / 2;
}

Es ist großartig geworden, aber es gibt mir das Ergebnis als LSB und nicht als MSB.

Zum Beispiel:


35
110001

Ich möchte jedoch, dass es 100011 ist.

Ich kann keine Funktion oder Methode verwenden, um es umzukehren. Mir ist klar, dass ich es in einem Array, einer Zeichenfolge oder was auch immer platzieren und etwas zaubern kann. Aber ich kann nur die While-Schleife, Modulo und Print verwenden.

Irgendwelche Vorschläge? Danke im Voraus

Gnom67
27.07.2022, 21:21
Du könntest andersrum vorgehen.
Beginne mit 2^7: temp = num mod 2^7. If temp <> num dann print 1 sonst print 0. num=temp.
Dann das Gleiche mit 2^6, 2^5, ...

Das geht für Zahlen bis 255. Wenn sie größer sind, musst du entsprechend mit höheren Potenzen beginnen.


Andererseits, wenn ich deinen Code sehe, du benutzt temp gar nicht wirklich, oder? Kannst du nicht das Ergebnis in temp speichern?


while(num != 0) {
temp = temp * 10 + num % 2;
num = (num - num % 2) / 2;
}
System.out.print(temp);