如何通过printf [duplicate]打印二进制数

wfsdck30  于 2023-04-19  发布在  其他
关注(0)|答案(2)|浏览(140)

此问题已在此处有答案

11年前关闭。

可能重复:

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中打印二进制是什么呢?

g6ll5ycj

g6ll5ycj1#

printf()并不直接支持这一点。相反,你必须创建自己的函数。
类似于:

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

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

z9gpfhce2#

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

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

来源:itoa() in cplusplus reference
这是一个非标准的C语言,但是K&R在C书中提到了它的实现,所以它应该是很常见的。它应该在stdlib.h中。

相关问题