如何通过printf打印二进制数

Reg*_*ser 35 c binary printf

可能重复:
是否有printf转换器以二进制格式打印?

这是我的计划

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

a=2
i=-3
Run Code Online (Sandbox Code Playgroud)

我希望这个以二进制打印.%x,%o和%d是十六进制,八进制和十进制数,但是什么用于在printf中打印二进制文件?

Vin*_*ura 50

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

就像是:

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

    n >>= 1;
}
printf("\n");
Run Code Online (Sandbox Code Playgroud)

  • 这会向后打印二进制表示 (63认同)
  • 这在-1处失败 (4认同)
  • @hexa make 函数并使用递归来纠正打印顺序。这会有帮助吗? (2认同)

zw3*_*324 42

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

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

这是起源:

在cplusplus参考中的itoa

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

  • 如果<stdlib.h>/<cstdlib>不适合你,这里有一个快速自己实现@ http://www.strudel.org.uk/itoa (2认同)