본문 바로가기

[Software Study]/C Programming

비트필드 구조체, 공용체(Union)

반응형

//Q) 비트필드 구조체를 이용하여 3.5의 8진수를 나열하여라.


#include<stdio.h>


struct str{

unsigned int m:23;

unsigned int e:8;

unsigned int s:1;

};

// 총 32비트(4바이트)의 비트필드 구조체 선언

// float의 형태는 부호 1비트, 지수 8비트, 가수 23비트로 구성되어 있다.

// 선언을 역순으로 하는 것은 Little Endian 구조이기 때문이다.


union uni

{

float f;

struct str su1;

};

//Union 함수는 변수중 가장 큰 데이터 형을 기준으로 하나의 방을 가지게 된다.

//따라서 float f의 주소와 struct str su1의 첫 요소의 주소는 동일하다.


void main()

{

union uni u1;

u1.f = 3.5f;    

//union에 있는 f값에 3.5(4바이트)를 저장한다.

printf("%#x\n", u1.su1);

//u1.f에 3.5를 저장했지만 printf를 이용하여 u1.su1을 불러오더라도 같은 값이 출력된다.


}


//결과 : 0x40600000

반응형