C언어 다섯번째 정리 - 실수형 저장 과정(IEEE754) 확인, 제로확장, 부호확장
실수
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로 된 변수가 연산이 빠른데 둘 다 최소한의 변환과정을 거치므로 다른 변수들에 비해 연산이 빠를 수밖에 없다.
'내장형 하드웨어 > C언어' 카테고리의 다른 글
C 언어의 연산자 - 산술, 비교, 논리 연산자 (0) | 2011.03.31 |
---|---|
문자, 문자열, ASCII code (확장 아스키) (0) | 2011.03.30 |
실수형 저장 과정(IEEE754) 확인, 제로확장, 부호확장, 마인드스톰(Sound sensor, Touch sensor, ultrasonic sensor) (0) | 2011.03.29 |
실수의 표현(저장) 방식 (3) | 2011.03.29 |
unsigned와 signed를 사용한 출력 값 비교 (제로확장, 부호확장) (0) | 2011.03.29 |