인프런 커뮤니티 질문&답변

leomessi님의 프로필 이미지
leomessi

작성한 질문수

[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문

불리언과 부동소수점

부동 소수점의 지수부 표현 방법에 대하여

해결된 질문

작성

·

327

0

지수부는 unsigned라고 말씀해주셨는데요, 음수 지수는 사용되지 않는건가요??

답변 2

2

Rookiss님의 프로필 이미지
Rookiss
지식공유자

음수를 표현하는 1비트가 따로 예약되어 있습니다.

0

십진수에서 이진수로 변환한뒤 1.xxxxx형태로 정규화하는 과정에서 지수부는 양수가 될수도 음수가 될수도 있습니다!! 그렇기에 양, 음수 지수 모두를 표현하려고 8bit 256의 절반씩을 나누어 쓰도록 127을 더해주는 것 같아요.
강사님이 들어주신 예와 다른 예(0.0390625)를 비교해봅시다.

3.375 --(이진수변환)--> 11.011
11은 두자리 수 이므로 정규화 하려면 부동 소수점을 왼쪽으로 한칸 옮겨야 합니다! 따라서
11.011 = 1.1011 * 2^1 (소수점을 좌로 한칸 옮겼으므로 지수부는 1이 되는겁니다!)

0.0390625 --(이진수변환)--> 0.0000101
1이 소수점 왼쪽에 위치하기 위하여 소수점은 오른쪽으로 5칸 가야겠죠? 그러면 다음과 같을겁니다.
0.0000101 = 1.01 * 2^-5 (소수점을 우로 5칸 옮겼으므로 지수부는 -5)

위 아래 bit 표현식은 127의 bias를 더해서 각각
1000 0000, 0111 1010 이 됩니다.
127을 더함으로써 양수 지수 음수 지수 모두 표기할 수 있게 되는겁니다!
신기한 점은 맨 앞 비트가 1이면 양수 지수, 0이면 음수 지수 임을 알 수 있다는 점(127을 더하기 때문이겠죠?).

참고로 double의 경우 지수부에 11bit 즉 2048을 나눠쓰기 위해 1023의 bias를 가해주니깐 2^-1024 ~ 2^1024 의 지수부를 표현할 수 있다고 합니다~

leomessi님의 프로필 이미지
leomessi

작성한 질문수

질문하기