Possible Duplicate:
C printing bits
假设我有一个uint16的数字,比如:

uint16_t myVar = 0x3A44;

我想打印二进制值如果0x3A44来自myVar,我如何迭代访问和打印每个位?
把它当作一个位数组?

最佳答案

整数实际上是位数组。您只需循环遍历数字的值,将该值向右移动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");
}

结果:
1111111100000000

09-06 17:10