我已经到处寻找答案,但是没有找到我的问题的答案。首先,我知道十进制的符号是%d
,八进制的符号是%o
,十六进制的符号是%x
。然而,我找不到二进制的符号。希望能得到任何帮助。
你找不到一个用于打印二进制整数的格式说明符的原因是因为并不存在这样的说明符。你需要编写自己的函数来打印二进制数。
因此,对于单个无符号字节:
#include <stdio.h>
#include <limits.h>
void print_bin(unsigned char byte)
{
int i = CHAR_BIT; /* however many bits are in a byte on your platform */
while(i--) {
putchar('0' + ((byte >> i) & 1)); /* loop through and print the bits */
}
}
对于标准的无符号整数:
#include <stdio.h>
#include <limits.h>
void print_bin(unsigned int integer)
{
int i = CHAR_BIT * sizeof integer; /* however many bits are in an integer */
while(i--) {
putchar('0' + ((integer >> i) & 1));
}
}
相应地调整函数以处理更大的整数。但要小心有符号移位,因为其行为是未定义的,并完全取决于编译器。
没有现成的方法。如果你想以二进制形式输出,只需编写代码即可。
没有直接的方法。一种方法是,您可以创建一个查找表,将一个字节转换为由1和0组成的const char *
。然后,您可以遍历字节并打印出查找表中的内容。