可能是重复问题:
有没有一个 printf 转换器可以以二进制格式打印?
这是我的程序
#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
我希望这个以二进制输出。在printf中,有%x、%o和%d用于16进制、8进制和10进制数字的输出,但是用于二进制输出的是什么?
可能是重复问题:
有没有一个 printf 转换器可以以二进制格式打印?
这是我的程序
#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
我希望这个以二进制输出。在printf中,有%x、%o和%d用于16进制、8进制和10进制数字的输出,但是用于二进制输出的是什么?
printf() 本身不直接支持该功能,您需要创建自己的函数。
可以尝试类似以下的实现:
while (n) {
if (n & 1)
printf("1");
else
printf("0");
n >>= 1;
}
printf("\n");
template
void print_binary(T n) {
int numbits = sizeof(T) * 8;
while(--numbits >= 0)
printf("%c", (n & ((T)1<仅适用于C语言,使用硬编码数据类型,将所有“T”替换为例如“int”。
- brita_虽然 ANSI C 没有这种机制,但可以使用 itoa()
作为快捷方式:
char buffer[33];
itoa(i, buffer, 2);
printf("binary: %s\n", buffer);
来源:{{link1:itoa()
在cplusplus参考中}}
这不是标准的C语言,但K&R在C语言书中提到了它的实现,所以它应该相当常见。它应该在stdlib.h
中。