내장형 하드웨어/C언어

C언어 다섯번째 정리 - 실수형 저장 과정(IEEE754) 확인, 제로확장, 부호확장

동화다아아 2011. 3. 29. 14:55

실수

1. 4byte 저장방식 확인

2. 45000.67을 IEEE754 표준 형식으로 표현

15.375를 IEEE754 표준 형식으로 표현.

⇒15.375 ⇒ float ⇒ 4175b645 ⇒ int ⇒ 1098233413

(참고자료에 업로드 - http://donghwada.tistory.com/43)


#include<stdio.h>

int main()

{

        printf("The size of float is %3d byte.\n", sizeof(float));

        printf("The size of double is %3d byte.\n", sizeof(double));

        printf("The size of long double is %3d byte.\n", sizeof(long double));


        return 0;

}

⇒ 실행결과


#include <stdio.h>

int main()

{

        unsigned int a=-1;

        unsigned char b=-1;

        char c=-1;     

        printf("%d\n",a);

        printf("%u\n",a);

        printf("%d\n",b);

        printf("%u\n",b);

        printf("%d\n",c);

        printf("%u\n",c);

        return 0;

}

 

 unsigned int a에서는 %d는 그대로 -1을 출력하며, %u는 unsigned int 이므로 양수로 출력해 4294967295를 나타낸다.

unsigned char b에서는 1byte가 4byte로 확장되었고 앞쪽의 빈공간은 0으로 채워졌으며 이것을 제로확장이라 한다.

char c에서는 1byte가 4byte로 확장되며 부호비트가 존재하기 때문에 그 부호를 따라 앞쪽의 빈 공간에 1 혹은 0이 채워지게 되는데 이것을 부호 확장이라고 한다.

(참고 자료 - http://donghwada.tistory.com/42)


프로그램에서는 int와 unsigned로 된 변수가 연산이 빠른데 둘 다 최소한의 변환과정을 거치므로 다른 변수들에 비해 연산이 빠를 수밖에 없다.