관리 메뉴

지식잡식

IEEE 754 부동 소수점 표현의 이해 본문

IT 이론/컴퓨터구조

IEEE 754 부동 소수점 표현의 이해

아이들링 2016.10.12 13:32

-118.625 를 2진수로 나타내려면 어떻게 해야 할까? 단순히 아래와 같은 표현을 생각해 볼 수 있겠다.

-1110110.101

이렇게 표현하면 어떤 실수도 제한 없이 표현 가능하다. 하지만 부호는 어떻게 표현할 것이며 소수점의 위치는 어떻게 나타낼 것인가? 그리고 컴퓨터에서 변수들 생성할 때는 메모리 할당을 위해 고정된 크기로 생성해야 한다. 그렇다면 어디까지를 정수에 할당하고 어디까지를 소수에 할당할 것인가?

이런 고민들에 표준을 제시한 것이 IEEE 754 이다.
IEEE 754 에선 지수부와 가수부 라는 표현을 사용한다.

-118.625 를 -1.18625 × 10의 2승 이라고 표현하는 것이다. 2진수로 나타내면
-1.110110101 × 2의 6승이다.

정수는 가장 앞의 한 자리만 남도록 소수점의 위치를 조정하고 소수점의 원래 위치는 지수로 표현하는 것이다. 이렇게 하면 어디까지 정수, 어디까지 소수를 할당할 것인가? 소수점의 위치는 어떻게 표현할 것인가? 라는 문제는 모두 해결된다.

부호는 -
가수는 1.110110101
지수(소수점 위치)는 6

이렇게 정리하면 깔끔하고 명확하다. IEEE 754 에선 가수의 맨 앞자리 정수는 생략한다. 어짜피 무조건 1.xxx..이기 때문이다. (메모리를 최대한 아끼자!) 다시 정리하면

부호는 -
가수는 110110101
지수(소수점 위치)는 6

이제 이 정보들을 어떻게 나누어 담을 것인가만 생각하면 된다. IEEE 754 에선 32비트형, 64비트형, 79비트형 등 여러 범위의 표현이 있지만 이 중 필수로 규정하는 32비트형을 기준으로 보자. ※ 모든 프로그래밍 언어에선 최소한 32비트형 IEEE 754 실수형 데이터 타입을 읽고 표현할 수 있어야 한다는 뜻이다.

32비트형에선
부호 1bit + 지수 8bit + 가수 23bit = 도합 32bit 구성을 가진다.

부호는 + 이면 0, - 이면 1
지수는 127(bias)을 기준으로 지수를 더하고 뺀 값을 적는다.
※ 지수가 양수일 수도 있고 음수일 수도 있기 때문에 보수 표현으로 이를 구분한다.
   ex) 136이면 +9 이고 84이면 -43
가수는 왼쪽부터 그대로 적고 나머진 0으로 채운다.

이런 규칙으로 정리하면
1 10000101 11011010100000000000000

이것이 -118.625의 IEEE 754 표현이다.

산술 파이프라인 구조에서 부동 소수점 수의 연산 과정
① 지수 비교, 0인지 여부 확인
② 가수 위치 조정
③ 가수부 합산
④ 결과값 정규화
2 Comments
댓글쓰기 폼