【问题标题】:What is the format specifier for binary in C? [duplicate]C中二进制的格式说明符是什么? [复制]
【发布时间】:2016-06-25 21:38:10
【问题描述】:

我找遍了所有地方,但我没有找到我的问题的答案。首先,我知道十进制的符号是%d,八进制的符号是%o,十六进制的符号是%x。但是,我找不到的是二进制的符号。我将不胜感激。

【问题讨论】:

标签: c binary symbols


【解决方案1】:

您无法找到以二进制形式打印整数的格式说明符的原因是没有格式说明符。您必须编写自己的函数来打印二进制数字。

所以对于单个无符号字节:

#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)); 
    }
}

相应地调整函数以获得更大的整数。不过要小心有符号移位,因为这种行为是未定义的并且完全依赖于编译器。

【讨论】:

  • 循环for(; i &gt; 0; --i) { 错误;对于 32 位整数,它将从 32 开始。我的建议:while i--) {
  • @wildplasser 谢谢,已编辑。
【解决方案2】:

没有直接的方法。一种方法是,您可以制作一个查找表,将一个字节转换为 1 和 0 的 const char *。然后您可以遍历字节并打印出查找表中的内容。

【讨论】:

    【解决方案3】:

    没有。如果你想以二进制输出,只需编写代码即可。

    【讨论】:

    • 更像评论?
    • 完全回答了他的问题。如果完整的答案应该是评论,那么这是一个糟糕的问题。但我认为这个问题没有任何问题。
    猜你喜欢
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多