#include int umrechnen(int number); void umrechnen2(int number, int bits); int main() { int number = 0; int validInput = 0; while (!validInput) { printf("Bitte geben Sie eine Zahl ein: "); if (scanf("%d", &number) != 1) { printf("Ungueltige Eingabe. Bitte geben Sie eine gueltige Zahl ein.\n"); while (getchar() != '\n'); // Eingabepuffer leeren } else { validInput = 1; } } if (number >= 0) { int erg = umrechnen(number); // Positive Zahl in Binär umrechnen printf("Binaerdarstellung: %d\n", erg); } else { int bits = sizeof(int) * 8 - 1; // Anzahl der Bits (z. B. 31 für 32-Bit-Systeme) printf("Binaerdarstellung: "); umrechnen2(number, bits); // Negative Zahl im Zweierkomplement ausgeben printf("\n"); } return 0; } int umrechnen(int number) { if (number == 0) { return 0; // Basisfall: Binärdarstellung von 0 ist 0 } else { return number % 2 + 10 * umrechnen(number / 2); // Rekursive Umrechnung } } void umrechnen2(int number, int bits) { if (bits < 0) { return; // Basisfall: Keine weiteren Bits zu prüfen } unsigned int mask = 1 << bits; // Maske für das aktuelle Bit if (number & mask) { printf("1"); } else { printf("0"); } return umrechnen2(number, bits - 1); // Rekursiver Aufruf für das nächste Bit }