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