diff --git a/.idea/Info2P5.iml b/.idea/Info2P5.iml deleted file mode 100644 index 4c94235..0000000 --- a/.idea/Info2P5.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/dualwand.c b/dualwand.c index 01d81bf..4638620 100644 --- a/dualwand.c +++ b/dualwand.c @@ -1,7 +1,7 @@ #include int umrechnen(int number); -int umrechnen2(int number); +void umrechnen2(int number, int bits); int main() { int number = 0; @@ -11,36 +11,44 @@ int main() { 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'); + while (getchar() != '\n'); // Eingabepuffer leeren } else { validInput = 1; } } + if (number >= 0) { - int erg = umrechnen(number); - printf(" %d\n", erg); - return 0; + int erg = umrechnen(number); // Positive Zahl in Binär umrechnen + printf("Binaerdarstellung: %d\n", erg); } else { - int erg = umrechnen2(number); - printf(" %d\n", erg); - return 0; + 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; - } { - return number % 2 + 10 * umrechnen(number / 2); - } -} -int umrechnen2(int number) { - unsigned int value = number; // Interpretiere die Zahl als unsigned - int bits = sizeof(int) * 8; // Anzahl der Bits in einem int (z. B. 32 Bits) - - for (int i = bits - 1; i >= 0; i--) { - printf("%d", (value >> i) & 1); // Gib das i-te Bit aus + 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"); + } + + umrechnen2(number, bits - 1); // Rekursiver Aufruf für das nächste Bit +} \ No newline at end of file diff --git a/dualwand.exe b/dualwand.exe index 9f7d695..cf88491 100644 Binary files a/dualwand.exe and b/dualwand.exe differ diff --git a/modus.exe b/modus.exe index 141ce62..656bd4a 100644 Binary files a/modus.exe and b/modus.exe differ