나미/C

19. IEEE 754 표준 - float, double형의 실수저장방식

규남 2013. 3. 21. 17:02
반응형

 

 

이 사진은 앞서 눈에 익혀 두었을것이다. 포인터 개념을 설명하였기에 이번엔 자세히 float 과 double 의 저장 방법에 대해서 설명할 것이다. 천천히 하나씩 이해하고 넘어가길 바란다.

 

float a = 10000.625f; 를 저장한다고 가정하에 설명을 한다.(32비트 기준)

 

1번. 먼저 소수점 앞의 10000을 2진수로 변환한다. 변환된 값은 : 10 0111 0001 0000 이다 (2로 나누어 계산)

 

2번. 소수점 뒷자리 0.625를 2진수로 변환한다. 변환된 값은 : 101 이다. (2로 곱하여 계산)

 

3번. 1번과 2번을 나열하면 10 0111 0001 0000.101 이된다.

 

4번. 101앞의 소수점을 맨 앞의 1바로 전으로 옮긴다. 즉 1.0011 1000 1000 0101 총 13칸 앞으로 이동

 

5번. 한칸 옮길때마다 2의 곱으로 숫자가 올라간다 즉 2의 13승 만큼 옮긴것이 된다.

 

6번. 32비트이므로 위에 그림 1번과 같이 양수 2의 127승까지 음수는 2의 -127승까지의 자리 수이다.

즉 이말은 총 0~255까지에서 절반인 127부터 255까지가 양수를 저장하는 비트라는 이야기이다.

 

7번. 맨앞의 부호 비트 한자리를 빼고 나면 지수부는 총 8비트로 이루어져 있다. 그럼 지수부와 가수부를

나누어 저장하여하 하는데 양수이므로 지수부분은 127부터 시작하므로 127 + 13 = 140 이된다.

127이 양수 0부터 시작지점  따라서 위에서 13칸만큼 소수점을 옮겼기 때문에 지수를 더해준다.

 

8번. 7번에서 더한 140을 2진수로 바꾸면 1000 1100이된다 이것이 지수값이다.

 

9번. 이번에는 가수부분의 값은 4번에 나와있는 1.0011 1000 1000 0101 여기서 소수점 앞의 1을 뺀 나머지

부분이 가수부분에 해당된다.

 

10번.따라서 양수이므로 부호 비트 : 0

   지수부    : 1000 1100

   가수부    : 0011 1000 1000 0101

이렇게 채워지는 방식이다.

이것을 IEEE 754 표준 방식이라 일컫는다.

 

 

728x90
반응형

'나미 > C' 카테고리의 다른 글

24.지역변수와 전역변수  (0) 2013.04.05
23. 배열  (0) 2013.04.03
22. 함수선언과 정의  (0) 2013.03.28
21. 비트연산자  (0) 2013.03.25
20. 메모리를 구성하는 5가지 영역  (0) 2013.03.21
18. Point와 Symbol Table  (0) 2013.03.20
17. 제어문 - 반복문, getch()와 getche()  (0) 2013.03.15
16. 제어문 - 복합문, 선택문  (0) 2013.03.14
15. 제어문과 변수선언 및 초기화  (0) 2013.03.13
14. 관계연산자와 논리연산자  (0) 2013.03.12