- 이 글은 부동 소수점(float) 값이 어떻게 메모리상에서 저장되고 표현되는지 설명함
- 값의 16진수, 10진수 형태와 실제 수치로의 변환 방법에 초점을 맞춤
-
기호(Sign), 지수(Exponent), 가수(Significand) 영역 정의와 각각의 역할 설명
- 특정 float 값이 정확히 어떤 2진, 10진 값을 나타내는지 해석 방법 예시 포함
- 표현 가능한 값 사이의 차이(Delta) 계산 내용도 언급함
부동 소수점 값의 저장 구조 분석
- "halfb float float double" 등 다양한 부동 소수점 포맷이 존재함
- 각각의 값은 Raw Hexadecimal Integer Value(16진수 정수 값) , Raw Decimal Integer Value(10진수 정수 값) 와 같이 메모리 내 저장값으로 확인 가능함
- 16진수 데이터는 Hexadecimal Form ("%a") 로, 실제 부동 소수점 표기와 연결됨
- 각각의 값의 위치는 Significand–Exponent Range(가수–지수 범위상 위치) 로 나타내어짐
2진수 및 10진수 값 해석 방법
- 부동 소수점 수는 Base-2(2진법 평가식) 으로 다음과 같이 표현 가능함:
- (−12)02×102(100010012 − 011111112)×1.011111110010100000000002
→ 2진 표현식을 통한 수치 평가임
-
Base-10(10진법 평가식) 에서는 이런 형태임:
- 1×210×1.4967041015625
→ 2의 10제곱과 소수 부분의 곱으로 표현함
- 실제로 변환 시의 정확한 10진수 값도 표시됨:
인접 값과의 거리(Delta) 계산
- 표현 가능한 값들 사이의 Delta(간격) 는 중요한 의미를 가짐
- 다음(Next)혹은 이전(Previous)으로 표현 가능한 값과의 거리(Delta to Next/Previous Representable Value) 를 각각 제공함
- 이 간격은 부동 소수점 값의 유효 자릿수/정밀도와 연관됨
요약
- 부동 소수점의 메모리 표현 및 2진, 10진 변환 원리
-
sign, exponent, significand 구조 설명
-
표현 범위와 인접 값과의 간격 정보도 함께 정리함