C: Dezimal in Binär umrechnen?
Hallo Leute,
ich muss ein Programm schreiben, welches eine Dezimalzahl in eine binäre Zahl umwandelt. Ich habe es schon programmiert, aber wenn ich 2 eingebe, kommt 10 heraus. Das stimmt auch, aber gehören davor noch zwei Nullen, sodass 0010 da steht? Wenn ja, wie geht das?
Danke für die Hilfe.
Hier mein Code:
int main(void)
{
int zahl = 0, dezimal = 0, rest = 0, ergebnis = 0, faktor = 1;
char wiederholen = 0;
printf("\nDieses Programm wandelt Dezimalzahlen in Dualzahlen um.\n");
printf("--------------------------------------------------------------");
printf("\nZahl eingeben: ");
scanf("%d", &dezimal);
zahl = dezimal;
while (dezimal != 0) {
rest = dezimal % 2;
dezimal = dezimal / 2;
ergebnis = ergebnis + (rest * faktor);
faktor *= 10;
}
printf("Binaer : %d \n", ergebnis);
printf("\nWollen Sie das Programm wiederholen (j/n)?");
wiederholen = getche();
if ((wiederholen == 'j') || (wiederholen == 'J')) {
return main();
}
else return EXIT_SUCCESS;
}
3 Antworten
Wenn du das allgemein ausgibst braucht es keine führenden Nullen. Falls du mit den Datentypen unten arbeites,t dann sollten es immer gleich viele Stellen sein. Also auffüllen mit Nullen.
- Nibble : 4 Stellen
- Byte: 8 Stellen
- Word: 16 Stellen
- DWord: 32 Stellen
- LWord: 64 Stellen
Habe schon lange kein C mehr gemacht. Ist int eine 16-Bit Zahl (+- 32000) oder 32-Bit (+- 2 Milliarden)?
Du solltest noch eine Abfrage einbauen, die zu große Zahlen abweist. Wenn es mehr als 10 Binärstellen (Eingabe 1024 und größer) werden, gibt dein Programm wahrscheinlich Unsinn aus. Bei 16 Bit Integer schon bei 6 Binärziffern (32 und größer)
Ansonsten kannst du mit %04d auf vier Stellen mit Nullen auffüllen, mit %06d auf 6 Stellen usw.
4 Führende Nullen bei der Ausgabe kannst du mit "%04d" erreichen.