49 lines
2.7 KiB
C
49 lines
2.7 KiB
C
/***********************************************************************************
|
|
* 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 <stdio.h>
|
|
#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;
|
|
}
|