如何通过printf打印二进制数

时间:2011-06-16 13:56:56

标签: c binary printf

  

可能重复:
  Is there a printf converter to print in binary format?

这是我的程序

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

    return 0;
}

输出

a=2
i=-3

我想要以二进制打印。 %x,%o和%d是十六进制,八进制和十进制数,但是什么用于在printf中打印二进制文件?

2 个答案:

答案 0 :(得分:49)

printf()不直接支持。相反,你必须自己动手。

类似的东西:

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

    n >>= 1;
}
printf("\n");

答案 1 :(得分:40)

虽然ANSI C没有这种机制,但可以使用itoa()作为快捷方式:

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

这是起源:

itoa in cplusplus reference

它是非标准的C,但K&amp; R提到了C书中的实现,所以它应该是很常见的。它应该在stdlib.h中。