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

标签 c bit

<分区>

Possible Duplicate:
C printing bits

假设我有一个类似 uint16_t 的数字:

uint16_t myVar = 0x3A44;

我想从 myVar 打印二进制值 if 0x3A44,我如何迭代访问和打印每一位?

把它当作一个位数组?

最佳答案

整数实际上是位数组。您可以循环遍历数字的值,将值向右移动 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

关于C:访问 uint16_t 数字中的各个位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950067/

相关文章:

c - 打印输出时如何保持stdin和stdout分开?

c - char指针赋值时刻的区别

C - 有什么方法可以使用位检查来检查数字是否等于 1?

c - C 中原始类型的位

c++ - 如何实现 MS 特定的 _BitScanReverse() 函数?

将各个程序集转换为机器代码

c - 关于 malloc() 的奇怪行为

c - memset 克隆产生奇怪的结果

c++ - 关闭数字最左边的非零位

c++ - 解释 C++ 中的位测试宏