web-dev-qa-db-fra.com

Comment imprimer un nombre binaire via printf

Duplicate possible:
Y a-t-il un convertisseur printf à imprimer au format binaire?

Voici mon programme

#include<stdio.h>
int main ()
{
    int i,a=2;
    i=~a;
    printf("a=%d\ni=%d\n",a,i);

    return 0;
}

La sortie est

a=2
i=-3

Je veux que cela soit imprimé en binaire. Il y a% x,% o et% d qui sont pour les nombres hexadécimaux, octaux et décimaux, mais que signifie-t-il pour imprimer du binaire dans printf?

35
Registered User

printf () ne supporte pas directement cela. Au lieu de cela, vous devez créer votre propre fonction.

Quelque chose comme:

while (n) {
    if (n & 1)
        printf("1");
    else
        printf("0");

    n >>= 1;
}
printf("\n");
51
Vinicius Kamakura

Bien que ANSI C n’ait pas ce mécanisme, il est possible d’utiliser itoa () comme raccourci:

  char buffer [33];
  itoa (i,buffer,2);
  printf ("binary: %s\n",buffer);

Voici l'origine:

itoa dans la référence cplusplus

C est non standard, mais K & R a mentionné l’implémentation dans le livre C, donc cela devrait être assez courant. Il devrait être dans stdlib.h.

42
zw324