IEEE 754 – floating point (부동소수점)

HYEONG HWAN, MUN/ 10월 18, 2014/ 미분류/ 0 comments

https://blog.lael.be/post/191

이 글은 라엘이가 컴퓨터공학전공 학부과정 1학년때 배운 내용을 정리한 것이다.

IEEE 754는 컴퓨터에서 소숫점을 표현하기 위한 방법이다.

single precision은 32비트 즉 4 Byte 에 저장하고
double precision은 64비트 즉 8 Byte 에 저장한다.

 


float num1 = 0.75; // single precision

double num2 = 0.75; // double precision

 

이 비트를 3부분으로 나누어 음수, 소수부분, 지수부분으로 인식한다.

 

(-1)^S * (1 + M) * 2^E

 

S : Sign (부호)

부호 0이면 양수, 1이면 음수

E : Exponent (지수)

지수부분 기본적으로 unsigned 이며 single precision에선 127, double에선 1023을 뺀다

M : Mantissa (가수)

앞쪽 비트부터 2^-1, 2^-2… 를 의미한다.

 

//08.10.22내용추가
위와 같이 표현하여서 이 방식을 SEM표현방식이라고도 한다.

//09.02.19내용추가
부동소수점 방식을 사용하는 이유한정된 자료 공간에서 더 넓은 범위의 숫자를 표현하기 위해서이다.
이에 이 방식에는 정밀도 라는 것이 있다.
고정된 길이에서 Exponent 부분을 늘이면 표현범위가 늘어나고 정밀도가 떨어진다.
고정된 길이에서 Fraction 부분을 늘이면 정밀도가 향상되고 표현범위가 줄어든다.

single [sign : 1bit][exponent : 8bit][fraction : 23bit]

double [sign : 1bit][exponent : 11bit][fraction : 52bit]

 

1 0111 1110 1000 0000 0000 0000 0000 000

이 수를 single precision으로 보고 해석하면

 

S(SignBit) : 1     ->  음수를 나타냅니다.

 

0111 1110 = 126

E = 126 - 127 = -1

 

M = 1000 0000 0000 0000 0000 000 = 2^(-1) = 0.5

따라서 (-1)^S * (1 + M) * 2^E 의 식에 대입해보면

답은 (-1)^1 * (0.5+1) * 2^(-1) = -0.75 가 된다.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*