diff --git a/04/binaerUmrechnungSchleife1.c b/04/binaerUmrechnungSchleife1.c new file mode 100644 index 0000000..37c2c4b --- /dev/null +++ b/04/binaerUmrechnungSchleife1.c @@ -0,0 +1,48 @@ +/*********************************************************************************** + * Aufgabe * + * Schreiben Sie ein Programm, das eine ganze Zahl einliest und die Rechenschritte * + * anzeigt, um die Bits der entsprechenden Binaerzahl zu ermitteln. Nutzen Sie * + * eine geeignete Schleife, sodass das Programm alle Stellen der Binärzahl anzeigt.* + * Lesen Sie zudem solange ein, bis eine positive Zahl eingegeben wird. * + * * + * Beispiel: * + * >> Geben Sie eine ganze, positive Zahl ein: abc * + * >> Geben Sie eine ganze, positive Zahl ein: -5 * + * >> Geben Sie eine ganze, positive Zahl ein: 21 * + * 21 / 2 = 10, Rest: 1 * + * 10 / 2 = 5, Rest: 0 * + * 5 / 2 = 2, Rest: 1 * + * 2 / 2 = 1, Rest: 0 * + * * + * Schreiben Sie danach das Programm so um, dass es Bit- und Shiftoperatoren * + * verwendet sowie negative Zahlen verarbeiten kann. Die Rechenschritte werden * + * nicht mehr anzeigt, sondern nur noch das Bitmuster aller gespeicherten Bits. * + * * + * Beispiele: * + * >> Geben Sie eine ganze Zahl ein: abc * + * >> Geben Sie eine ganze Zahl ein: 21 * + * 00000000000000000000000000010101 * + * * + * >> Geben Sie eine ganze Zahl ein: -9 * + * 11111111111111111111111111110111 * + ***********************************************************************************/ + +#include +#include "../io/myio.h" + + +int main() +{ + unsigned int number = getNumber("Ganze Zahl: "); + + while(number > 0) + { + int remainder = number % 2; + int division = number / 2; + printf("%5d / 2 = %5d; Rest %d\n", number, division, remainder); + + number = division; + } + + return 0; +} diff --git a/04/binaerUmrechnungSchleife.c b/04/binaerUmrechnungSchleife2.c similarity index 93% rename from 04/binaerUmrechnungSchleife.c rename to 04/binaerUmrechnungSchleife2.c index 2d98556..e866633 100644 --- a/04/binaerUmrechnungSchleife.c +++ b/04/binaerUmrechnungSchleife2.c @@ -28,9 +28,17 @@ ***********************************************************************************/ #include +#include "../io/myio.h" + int main() { + unsigned int number = getNumber("Ganze Zahl: "); + + for(int i = sizeof(number)*8-1; i >= 0; i--) + { + printf("%d", 1 & (number >> i)); + } return 0; } diff --git a/04/eingabePruefung.c b/04/eingabePruefung.c index 4f3fa2e..00139c1 100644 --- a/04/eingabePruefung.c +++ b/04/eingabePruefung.c @@ -20,6 +20,8 @@ #include +// siehe 03: explizitesCasting.c + int main() {