From 9078f481c72cf444955cdac901410ebaca89a2f3 Mon Sep 17 00:00:00 2001 From: Bora Date: Thu, 10 Apr 2025 19:58:09 +0200 Subject: [PATCH] halo --- dualwand.c | 45 +++++++++++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/dualwand.c b/dualwand.c index a409d9b..fef7ec2 100644 --- a/dualwand.c +++ b/dualwand.c @@ -1,6 +1,7 @@ #include -void umrechnen(int number); +int umrechnen(int number); +int umrechnen2(int number); int main() { int number = 0; @@ -15,26 +16,30 @@ int main() { validInput = 1; } } + if (number >= 0) { + int erg = umrechnen(number); + printf(" %d\n", erg); + return 0; + } else { + int erg = umrechnen2(number); + printf(" %d\n", erg); + return 0; + } - umrechnen(number); - - return 0; } -void umrechnen(int number) { - int bits = sizeof(int) * 8; // Anzahl der Bits in einem int (z. B. 32 Bits) - unsigned int mask = 1 << (bits - 1); // Maske für das höchstwertige Bit - - // Wenn die Zahl negativ ist, wird sie als Zweierkomplement interpretiert - unsigned int value = number; - - for (int i = 0; i < bits; i++) { - // Prüfe das höchstwertige Bit und schiebe die Maske nach rechts - if (value & mask) { - printf("1"); - } else { - printf("0"); - } - mask >>= 1; // Schiebe die Maske um ein Bit nach rechts +int umrechnen(int number) { + if (number == 0) { + return 0; + } { + return number % 2 + 10 * umrechnen(number / 2); } -} \ No newline at end of file +} +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 + } +}