C中二进制的格式说明符是什么?
What is the format specifier for binary in C?
我找遍了所有地方,但没有找到问题的答案。首先,我知道十进制的符号是%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));
}
}
相应地调整较大整数的函数。但是要小心有符号的移位,因为行为是未定义的并且完全依赖于编译器。
没有直接的方法。一种方法是,您可以查找 table 将一个字节转换为 1 和 0 的 const char *
。然后你可以遍历字节并打印出查找中的内容 table.
我找遍了所有地方,但没有找到问题的答案。首先,我知道十进制的符号是%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));
}
}
相应地调整较大整数的函数。但是要小心有符号的移位,因为行为是未定义的并且完全依赖于编译器。
没有直接的方法。一种方法是,您可以查找 table 将一个字节转换为 1 和 0 的 const char *
。然后你可以遍历字节并打印出查找中的内容 table.