halo
This commit is contained in:
parent
555fabfbbd
commit
18d90499ac
2
.idea/Info2P5.iml
generated
2
.idea/Info2P5.iml
generated
@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module classpath="CIDR" type="CPP_MODULE" version="4" />
|
46
dualwand.c
46
dualwand.c
@ -1,7 +1,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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
|
||||
}
|
BIN
dualwand.exe
BIN
dualwand.exe
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user