Cómo imprimir un número binario mediante printf

Posible duplicado:
¿Hay un convertidor de impresión para imprimir en formato binario?

Aquí está mi progtwig

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

El resultado es

 a=2 i=-3 

Quiero que esto se imprima en binario. Hay% x,% o, y% d que son para números hexadecimales, octales y decimales, pero ¿para imprimir en binario en printf?

printf () no es compatible directamente con eso. En cambio, debes hacer tu propia función.

Algo como:

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

Aunque ANSI C no tiene este mecanismo, es posible usar itoa () como un acceso directo:

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

Aquí está el origen:

itoa en referencia cplusplus

No es C estándar, pero K & R mencionó la implementación en el libro C, por lo que debería ser bastante común. Debería estar en stdlib.h.