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>
|
#include <stdio.h>
|
||||||
|
|
||||||
int umrechnen(int number);
|
int umrechnen(int number);
|
||||||
int umrechnen2(int number);
|
void umrechnen2(int number, int bits);
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
int number = 0;
|
int number = 0;
|
||||||
@ -11,36 +11,44 @@ int main() {
|
|||||||
printf("Bitte geben Sie eine Zahl ein: ");
|
printf("Bitte geben Sie eine Zahl ein: ");
|
||||||
if (scanf("%d", &number) != 1) {
|
if (scanf("%d", &number) != 1) {
|
||||||
printf("Ungueltige Eingabe. Bitte geben Sie eine gueltige Zahl ein.\n");
|
printf("Ungueltige Eingabe. Bitte geben Sie eine gueltige Zahl ein.\n");
|
||||||
while (getchar() != '\n');
|
while (getchar() != '\n'); // Eingabepuffer leeren
|
||||||
} else {
|
} else {
|
||||||
validInput = 1;
|
validInput = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (number >= 0) {
|
if (number >= 0) {
|
||||||
int erg = umrechnen(number);
|
int erg = umrechnen(number); // Positive Zahl in Binär umrechnen
|
||||||
printf(" %d\n", erg);
|
printf("Binaerdarstellung: %d\n", erg);
|
||||||
return 0;
|
|
||||||
} else {
|
} else {
|
||||||
int erg = umrechnen2(number);
|
int bits = sizeof(int) * 8 - 1; // Anzahl der Bits (z. B. 31 für 32-Bit-Systeme)
|
||||||
printf(" %d\n", erg);
|
printf("Binaerdarstellung: ");
|
||||||
return 0;
|
umrechnen2(number, bits); // Negative Zahl im Zweierkomplement ausgeben
|
||||||
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int umrechnen(int number) {
|
int umrechnen(int number) {
|
||||||
if (number == 0) {
|
if (number == 0) {
|
||||||
return 0;
|
return 0; // Basisfall: Binärdarstellung von 0 ist 0
|
||||||
} {
|
} else {
|
||||||
return number % 2 + 10 * umrechnen(number / 2);
|
return number % 2 + 10 * umrechnen(number / 2); // Rekursive Umrechnung
|
||||||
}
|
|
||||||
}
|
|
||||||
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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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