c - 如何在 C 中将 32 位整数的位模式存储在 32 长度的 0 和 1 字符串中

标签 c bit-manipulation bit-shift

我正在尝试弄清楚如何执行标题中描述的操作。然而,有一些规则。我只能使用位级运算来确定字符是0还是1。因此没有函数调用、宏调用、加法、减法、除法、取模或乘法。

我很可能最终会使用异或和/或位移位。我只是不确定到底该怎么做。我在这里发现了一个类似的问题,但它涉及从字符串转换为整数。如有任何帮助,我们将不胜感激。

最佳答案

char *uintToChar(uint32_t uint, char *buff)
{
    char *wptr = buff;

    for(uint32_t i = 1ul << 31; i ; i >>= 1)
    {
        *wptr++ = (uint & i) ? '1' : '0';
    }
    *wptr = 0;
    return buff;
}


int main(void)
{
    char d[33];

    printf("%s\n", uintToChar(0xf0f0f0f0, d));
}

关于c - 如何在 C 中将 32 位整数的位模式存储在 32 长度的 0 和 1 字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52562605/

相关文章:

c - 仅使用头文件进行编程?

c++ - 即使在使用 extern "C"之后,如何解决名称重整出现的问题?

c - 为什么这段 C 代码会崩溃?

c - 将 int 存储在 C 的 char 缓冲区中,然后检索相同的

c - 在 char 数组和掩码中使用 int 而不是 char

c++ - C++ 移位运算符的思考

java - 从 Java ByteBuffer 中的字节获取低阶和高阶 nybbles

C:为什么宏展开不是递归发生的?

c - 为什么此代码片段的输出为 -33

jsp - 如何在 EL 中使用移位运算符