피드로 돌아가기
Dev.toInfrastructure
원문 읽기
Power-of-Two 기반 Binary Fraction 변환과 Floating Point 오차의 구조적 원인 분석
Why the Power-of-Two Trick Works for Binary Fractions (And Why It Breaks for Everything Else)
AI 요약
Context
십진수 소수를 이진수로 변환할 때 반복 곱셈법의 기계적 절차에 의존하는 한계 존재. Base-2 시스템에서 분모가 2의 거듭제곱이 아닌 경우 발생하는 무한 소수 생성 및 정밀도 손실 문제 분석.
Technical Solution
- 분수를 분자와 분모의 이진수 형태로 분리하여 접근하는 구조적 변환 방식 채택
- 분모가 2ⁿ 형태일 때 Binary Point를 n만큼 Left Shift 하는 연산 최적화 적용
- Power-of-Two 기반의 나눗셈을 Bit-shift 연산으로 대체하여 연산 비용 최소화
- Fixed-point Arithmetic 구조를 통해 Floating Point Unit(FPU) 없는 환경에서의 효율적 수치 표현 구현
- 분모가 2의 거듭제곱이 아닌 경우(예: 1/5) Long Division 필요성에 따른 무한 반복 구조 확인
- Base-10과 Base-2 간의 진법 변환 시 발생하는 Representation Error의 근거 제시
실천 포인트
- 금융 데이터 등 정밀한 수치 계산 필요 시 Floating Point 대신 Fixed-point 또는 Decimal 타입 검토 - 임베디드 시스템 설계 시 나눗셈 연산을 Bit-shift로 대체 가능한 Power-of-Two 구조 설계 적용 -
0.1 +
0.2 ≠
0.3과 같은 부동 소수점 오차 발생 시 Binary Representation의 한계임을 인지하고 적절한 Epsilon 값 기반 비교 로직 구현