인프런 커뮤니티 질문&답변
부동소수점에서 음수 지수를 위한 범위 표현 방식
해결된 질문
작성
·
28
1
음수 지수 때문에 지수부분 범위를 -127에서 128로 범위가 잡혀 있던데 원래는 이전 강의 시간에서 배운대로 8bit로 표현될 수 있는 범위가 -2의n-1승 ~ 2의n-1승 - 1로 -128~127사이 아닌가요?
답변 1
1
안녕하세요, southgyuios19님.
말씀해주신 -128 ~ 127 범위는 정수를 저장할 때 사용하는 2의 보수 방식입니다.
반면, 부동소수점의 지수부는 대소 비교를 빠르게 하기 위해 바이어스(bias) 방식을 사용합니다.
8비트를 0~255의 양수로 간주하고, 실제 값을 구할 때는 127을 빼는 식으로 계산합니다.
즉, 2의 보수가 아닌 바이어스 방식을 쓰기 때문에 달라진다고 생각해주시면 됩니다.
앞으로도 학습 중 궁금한 점은 언제든 질문해 주세요!
그리고 실제로 값을 뺀다는 것이 컴퓨터가 실제로 연산할 때 말하는건가요? 저희가 바이어스 방식으로 127을 더해줬던 걸 컴퓨터가 127을 다시 빼서 계산하는건가요?
(1) bias 값이 127인 이유
https://en.wikipedia.org/wiki/Exponent_bias
bias 계산에 대해 참고할만한 문서를 가져왔습니다.
If there are E bits in the exponent, the bias is typically set as b=2^(E−1)−1
위와 규칙에 기반하여 bias 값을 결정하게 된다고 합니다. 즉 E=8일때 b=127입니다.
그럼에도 southgyuios19님이 질문해주신 "왜 하필 127일까? 128이면 안될까?"에 대한 답변으로는 부족한 것 같아 조금 더 찾아보니,
128을 bias로 사용하면 표현할 수 있는 지수부의 범위가 [-128, 127]가 됩니다.
127을 bias로 사용했을 때의 지수부 범위 [-127, 128]와 비교하면 표현 가능한 최대 양수 값이 더 작습니다.
이것으로 미루어보아 127로 결정한 것은,
즉 bias 값으로2^(E−1) 이 아닌 2^(E−1)−1 을 선택한 것은,
범위를 극대화하기 위한 선택이라고 볼 수 있을 것 같습니다 :)
추가)
위 링크에 나와있는 내용인데, [-127, 128] 범위에 해당하는 양 끝 값인 -127, 128은 특별한 값으로 취급되기 때문에 좀 더 정확한 범위를 표현하자면 [-126, 127]이 된다고하네요! 이 부분은 추후 강의 내용에도 보완해보겠습니다.
(2) 값을 뺀다는 것의 정확한 의미
알고계신 것이 맞습니다!
값 저장 시: 바이어스를 더함
ex. 지수가 -3일 때 -3+127=124가 메모리에 저장됩니다.
이렇게 양수로 만들어서 저장하게 되면 값의 대소 비교가 더 빨라질 수 있습니다.
2의 보수 변환 과정없이 즉각적인 비교가 가능하기 때문입니다.
연산 시: 바이어스를 뺌
ex. 컴퓨터의 연산장치가 저장된 값 124를 읽어와서 124-127=-3을 복원합니다.
이 -3을 사용하여 실제 계산을 수행합니다.
감사합니다





답변 감사합니다. 보수 방식과 바이어스방식이 있어서 달라졌다는 걸 인지했습니다. 근데 특별하게 127을 빼는 이유가 있나요?