C:访问uint16_t数字中的各个位?

Sno*_*Mac 0 c bit

可能重复:
C打印位

可以说我有一个uint16_t数字:

uint16_t myVar = 0x3A44;
Run Code Online (Sandbox Code Playgroud)

我想打印来自myVar的0x3A44的二进制值,我怎么能迭代访问并打印每一位?

把它当作一个阵列?

Dav*_*ave 5

整数有效地是位数组.您可以循环遍历数字的值,将值向右移动16次.

#include <stdio.h>
#include <stdint.h>

int main() {
    uint16_t x = 0xFF00;
    for (int i = 0; i < 16; i++) {
        printf("%d", (x & 0x8000) >> 15);
        x <<= 1;
    }
    printf("\n");
}
Run Code Online (Sandbox Code Playgroud)

结果是:

1111111100000000
Run Code Online (Sandbox Code Playgroud)

  • 这有效,但它打印回来 (3认同)
  • @Kaz:通常我不会编辑人们的答案,但这似乎是一个非常明确的错误语言案例,很容易修复,所以我修复了它. (2认同)