Hoe een binair getal af te drukken via printf [duplicate]

Mogelijk duplicaat:
Is er een printf-converter om in binair formaat af te drukken?

Hier is mijn programma

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

De uitvoer is

a=2
i=-3

Ik wil dat dit binair wordt afgedrukt. Er zijn %x, %o en %d die voor hexadecimale, octale en decimale getallen zijn, maar wat is voor het afdrukken van binair in printf?


Antwoord 1, autoriteit 100%

printf() ondersteunt dat niet direct. In plaats daarvan moet je je eigen functie maken.

Zoiets als:

while (n) {
    if (n & 1)
        printf("1");
    else
        printf("0");
    n >>= 1;
}
printf("\n");

Antwoord 2, autoriteit 89%

Hoewel ANSI C dit mechanisme niet heeft, is het mogelijk om itoa() als snelkoppeling te gebruiken:

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

Dit is de oorsprong:

itoa in cplusplus-referentie

Het is niet-standaard C, maar K&R noemde de implementatie in het C-boek, dus het zou heel gewoon moeten zijn. Het zou in stdlib.h moeten staan.

Other episodes