2017-11-30 17 views
0

구조체를 사용하여 문자 변수가 선언됩니다. 해당 문자 유형 변수의 모든 비트에 액세스 (읽기 및 쓰기)하고 싶습니다. 나는 비트 필드를 사용하여 그 일을 해결했다. 코드는 아래와 같습니다. 하지만 인쇄하고 싶으면 개별적으로 호출해야합니다. 나는 그들을 반복해서 부를 수 없다.for 루프를 사용하여 구조체 비트 필드 데이터 조작

#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); 
} 
+1

C 또는 C++? 이 둘은 프로그램 의미론에 항상 동의하지 않습니다. "단지 이유"라고 태그해서는 안됩니다. – StoryTeller

+0

왜 태그'C++' –

답변

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 

참고이 인쇄 최하위 비트 먼저. 가장 중요한 비트가 가장 먼저 필요하면 루프 대신 루프 카운트를 사용하십시오.

+0

내 코드를 사용하여 할 수 있습니까 ??? 내 코드를 사용하여 그 일을 할 수 없기 때문에 .... –