반응형
//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
반응형
'[Software Study] > C Programming' 카테고리의 다른 글
재귀함수를 이용한 팩토리얼(!) 구하기 (1) | 2013.10.23 |
---|