C언어/C언어 예제

float 4바이트 실수 형식 메모리에 표현 방식을 확인할 수 있는 C 소스 코드 작성하기

언제나휴일 2020. 4. 22. 01:33
반응형

 

4바이트 실수를 메모리에 표현하는 방식에 관한 강의 동영상
#include <stdio.h>
//union은 내부 멤버 중에 제일 큰 멤버 크기의 메모리를 할당합니다.
typedef union
{
    float value; //4바이트
    struct
    {
        unsigned exponent : 23; //23비트
        unsigned mantissa : 8; //8비트
        unsigned sign : 1; //1비트
    }sv; //4바이트
    unsigned iv;//4바이트    
}test;

int main(void)
{   
    printf("%.20f\n", 0.1 + 0.2); //실수 형식은 10진수 체계로 메모리에 표현하지 않음을 확인
    test t;
    t.value = -13.625;
    printf("부호부:%u\n", t.sv.sign); //%u는 부호없는 정수로 출력
    printf("지수부:%#x\n", t.sv.mantissa); //%#x는 16진수로 출력하고 앞에 0x 표시
    printf("가수부:%#x\n", t.sv.exponent);
    printf("4바이트 16진수:%#x\n", t.iv);
    return 0;
}
반응형