also das hier funktioniert, allerdings wird nicht abgefangen ob auch wirklich ein int eingelesen wurde. versuch aber bitte zu verstehen was da passiert.
Code:
// ein int belegt sizeof(int) bytes.
// damit sizeof(int)*8 bits. [bN, .... b1, b0]
// wenn ich nun eine 1 auf position bN bringen möchte, muss ich
int shift = ((sizeof (int)) * 8) - 1;
// shift mal die 1 nach links schieben.
unsigned int pattern = 1 << shift;
// pattern ist nun [1, 0, 0 , .... , 0]
int the_int;
// the_int ist der int der binär ausgegeben werden soll.
printf ("bitte einen int eingeben ");
scanf ("%d", &the_int);
// nun muss N (also shift+1) mal geprüft werden ob bei the_int das N'te bit gesetzt ist.
int i;
for (i = 0; i <= shift; i++) {
if (the_int & pattern) {
printf ("1");
}
else {
printf ("0");
}
// nun noch die 1 im pattern um eine position nach rechts.
// (*) aus der doku:
// The right shift operator causes the bit pattern in the first operand to be shifted right the number
// of bits specified by the second operand.
// Bits vacated by the shift operation are zero-filled for unsigned quantities.
// For signed quantities, the sign bit is propagated into the vacated bit positions
//
// wir wollen das nullen nachgeschoben werden. desshalb ist pattern unsigned...
pattern = pattern >> 1;
if (i < shift) {
printf ("|");
}
}
printf ("\n");