使用结构声明了一个字符变量。我想访问(读取和写入)该字符类型变量的所有位。我用Bit Field解决了这个问题。代码如下。但如果我想打印它们,应该单独调用它们。我无法循环调用它们。
#include<stdio.h>
struct SevenSegmentValue
{
unsigned char bit0:1;
unsigned char bit1:1;
unsigned char bit2:1;
};
struct SevenSegmentValue abc[3]={{1,0,1},{0,1,1},{1,1,0}};
int main(void)
{
printf( "Memory size occupied by status1 : %d\n", sizeof(abc));
printf( "Memory size occupied by status1 : %d\n", abc[2].bit0);
printf( "Memory size occupied by status1 : %d\n", abc[2].bit1);
printf( "Memory size occupied by status1 : %d\n", abc[2].bit2);
}
答案 0 :(得分:2)
您无法创建位字段数组,因此无法遍历它们。
如果要打印unsigned char
中的所有位,可以使用位移来访问每个位:
unsigned char c = 0x32;
int i;
for (i=0; i<8; i++) {
printf("bit %d: %d\n", i, ((c >> i) & 1));
}
输出:
bit 0: 0
bit 1: 1
bit 2: 0
bit 3: 0
bit 4: 1
bit 5: 1
bit 6: 0
bit 7: 0
请注意,这首先打印最低有效位。如果你想要最重要的位,那么让循环计数向下而不是向上。