▣ 부동소수점 형식을 표현하는 IEEE 754
IEEE 754 표준에는 32비트, 64비트, 43비트, 79비트에 대한 형식을 정의하고 있습니다.
32비트 부동소수점 표현 – Single Precision(단정도, float)
[값의 저장 범위 : 1.2E-38 ~ 3.4E38]
3.2 라는 실수 값이 32비트 부동소수점 표현방식에 따라 어떻게 저장되는지 그 과정을 설명을 하겠습니다.
10진수 3를 2진수로 변환하면 0011 입니다. 소수부 0.2값을 이진법으로 변환하는 방법은 해당값에 2를 곱해서 그 결과 값이 1을 넘지 않으면 0, 결과 값이 1이 나오면 1이라고 명시하고 변환 완료, 결과 값이 1을 넘으면 1이라고 명시하고 결과 값에서 1을 빼고 결과 값이 1이 나올때까지 이 과정을 반복합니다.
0.2 * 2 = 0.4 -> 0
0.4 * 2 = 0.8 -> 0
0.8 * 2 = 1.6 -> 1
0.6 * 2 = 1.2 -> 1
0.2 * 2 = 0.4 여기서는 동일한 값이 반복되기 때문에 생략… 0.2을 이진수로 변환한 값은 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1……입니다.
이 값은 양수이기 때문에 “ 부호비트는 0 “입니다.
1 1 . 0 0 1 1 0 0 1 1 0 0 1 1….
1 . 1 0 0 1 1 0 0 1 1 0 0 1 1… * 2의 1 승수 -> “가수는 1 . 1 0 0 1 1 0 0 1 1 0 0 1 1 … “이고 “지수는 1 “이 됩니다.
지수는 음수가 나올수 있기 때문에 결국 8비트의 저장공간에 음수 또는 양수 형태의 지수를 저장해야하기 때문에 8비트의 공간을 양수와 음수를 위해서 절반으로 나누게 됩니다. 8비트의 저장 공간이 0 ~255 사이의 값을 저장할 수 있는 크기이기 때문에 절반으로 나누어 127을 중간 값으로 정의되어 있습니다. 즉 127이 0을 의미하게 됩니다.
현재 지수는 1이여서 127 + 1의 값으로 저장됩니다. 128을 이진수로 변환하면 10000000 이기 때문에 “지수부 8비트에 저장되는 값의 형태는 1 0 0 0 0 0 0 0 ”이 됩니다.
가수부는 23비트 10011001100110011001100 이다 하지만 여기서 23비트에서 짤린다음 비트가 1이면 반올림하고 0이면 올림이 일어나지 않는다.
3.2의 실수를 표현하면
0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1
16진수로 표현하면 404CCCCD
'C언어' 카테고리의 다른 글
| IEEE 754 부동소수점표현 방식 (0) | 2009/04/27 |
|---|---|
| Big-Endan Little-Endan (0) | 2009/04/27 |



Prev
