Hey there.
On pourra compléter ma réponse, mais personnellement, j'aurais fait comme ceci :
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[])
{
int n = 12;
int i;
printf("n représenté en binaire = ");
for (i = 0; i < 8*sizeof(n); i++){
printf("%d",((n<<i)&0xffffffff)>>(8*sizeof(n)-1));
}
putchar('\n');
return EXIT_SUCCESS ;
}
En effet, lors du shifting des bits, il est important de s'assurer que les bits qui "dépassent" soient bien égaux à 0 (ce que je fais en faisant un ET logique avec la taille limite d'un int sur 32 bits). C'est pas générique, mais ça donne l'idée.
Moche, mais ça a le mérite de fonctionner
