콘텐츠로 바로가기

Integer & Float Representations

컴퓨터가 정수와 실수를 이진 비트로 추상화하는 방식과, 보수(Complement) 체계 및 IEEE 754 표준이 갖는 물리적 오차와 제약을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

정수 및 부동소수점 표현(Integer & Float Representations, IFR)은 현실의 숫자가 컴퓨터라는 이진 물리 장치 내부로 들어올 때 거치는 디지털 변환 규약입니다.

컴퓨터는 '무한한 수'를 다루지 못하며, 제한된 비트 수 내에서 숫자를 정밀하게 혹은 효율적으로 표현하기 위한 타협을 선택합니다. 학습자는 음수를 표현하는 가장 우아한 방식인 **2의 보수(2's Complement)**의 수리적 장점을 배우고, 실수의 광범위한 범위를 다루기 위한 IEEE 754 부동소수점 표준의 내부 구조(부호, 지수, 가수)를 배웁니다. 이를 통해 단순히 변수를 선언하는 단계를 넘어, 오버플로우(Overflow)나 부동소수점 오차(Precision loss)가 발생하는 물리적 임계치를 이해하고 안전한 수치 연산을 보장하는 하드웨어 이해도를 갖춥니다.

2. Scope & Boundaries

In-Scope

  • Fixed-point Mechanics: 부호 있는 정수의 표현(Sign-Magnitude vs. 2's Complement)
  • Two's Complement Physics: 덧셈기 하나로 뺄셈까지 수행하는 보수 회로의 이점
  • IEEE 754 Standard: 단정도(Single) 및 배정도(Double) 실수의 비트 배치 기술
  • Internal Numerical Errors: 반올림 오차(Rounding), 언더플로우, 비정규수(Subnormal)

Out-of-Scope

  • 숫자를 문자로 표현하는 문자 인코딩(ASCII, UTF-8) 상세 (04-03 영역으로 위임)
  • 임의 정밀도 연산 라이브러리(BigInt)의 소프트웨어 구현 기술

Boundaries

  • IFR vs. Arithmetic Logic: IFR이 데이터의 '정적인 저장 상태와 규격'을 본다면, 산술 논리는 이 규격들을 사용하여 '동적으로 연산하는 과정'에 집중합니다.

3. Counterexample

  • 단순히 "정수는 bin() 함수로 본다"는 방식은 IFR 학습이 아닙니다. 왜 부동소수점에서 0.1 + 0.2 결과가 정확히 0.3이 되지 않는지 비트 단위의 가수부(Fraction) 물리를 통해 입증할 수 있어야 하고, 데이터 저장 시 엔디언(Endianness) 문제가 하드웨어 아키텍처 간 통신에서 어떤 파괴적 오해를 불러일으키는지 설명할 수 있어야 합니다.

4. Prerequisites

  • 디지털 논리 및 불리언 대수 (Basic): 이진 게이트의 하드웨어 전압 물리 이해가 필수입니다. (02-01-01 DLB)
  • 정보 이론 및 엔트로피 (Recommended): 비트당 담을 수 있는 정보량의 한계 이해가 권장됩니다. (01-04-03 ITE)

5. Learning Map

  1. Binary Quantization: 십진수 체계를 이진 비트 세그먼트로 격리하는 기초를 세웁니다.
  2. Complement Strategy: 음수 부호 처리를 위한 물리적 회로 복잡도를 최소화하는 보수법을 익힙니다.
  3. Floating Architecture: 고정된 비트 내에서 소수점의 위치를 유동적으로 움직여 실수를 모델링합니다.
  4. Precision Management: 유한 비트가 가진 물리적 한계와 그로 인한 수치 오류를 정량화합니다.

6. Learning Topics

Basic

Core: 정수 표현과 2의 보수 (Integer Foundations)

  • Why to Learn: 컴퓨터가 음수를 양수와 동일한 하드웨어 가산기로 처리할 수 있게 하는 수리적 승리를 이해하기 위함입니다.
  • What to Learn:
    • 부호-절댓값(Sign-Magnitude) 방식의 한계와 ‘0’의 중복 물리
    • 2의 보수(2's Complement)의 정의: 2n2^n을 법(modmod)으로 하는 수 체계
    • 오버플로우(Overflow) 발생 시 비트 전이 현상
  • How to Learn:
    • 4비트 체계에서 음수를 보수로 바꾸고, 양수와 더했을 때 최상위 비트가 버려지며 0이 되는 과정 실습
    • 정수형 변수의 최댓값에 1을 더했을 때 음수 최솟값으로 돌아가는 물리적 이유 관찰
  • Implement: 십진 정수를 입력하면 부호와 비트 길이에 따른 2의 보수 이진 스트링을 출력하는 변환기

Core: IEEE 754 부동소수점 표준 (Floating Point Physics)

  • Why to Learn: 매우 작은 원자 크기부터 매우 큰 행성 거리까지 하나의 규격으로 표현하기 위한 공학적 약속을 배우기 위해서입니다.
  • What to Learn:
    • 비트 구성: Sign(1), Exponent(8/11), Fraction(23/52)
    • 바이어스(Bias) 지수 표기법의 물리적 선택 이유
    • 정규화(Normalization): 항상 1.xxxxx1.xxxxx 형태로 맞추는 비트 효율화 전술
  • How to Learn:
    • 13.62513.625와 같은 실수를 IEEE 754 32비트 형식으로 손으로 분해해보는 실습
    • 00을 지수로 설정했을 때 나타나는 비정규수(Denormalized)와 무한대(infinf), NaN의 비트 패턴 분석
  • Implement: 실수를 입력하면 IEEE 754 비트 구조를 시각적으로 분리하여 보여주는 분석 툴

Practical

Core: 정밀도 손실과 수치 안정성 (Numerical Limits)

  • Why to Learn: 금융 결제나 물리 시뮬레이션에서 0.0001의 오차가 시스템 전체를 붕괴시키지 않도록 방어하기 위함입니다.
  • What to Learn:
    • 반올림 오차(Rounding Error): 유한한 가수부가 무한 소수를 자를 때 발생하는 물리적 정보 증발
    • 머신 엡실론(Machine Epsilon): 1과 그다음 표현 가능한 수 사이의 거리
    • 자릿수 부족(Loss of Significance) 현상: 비슷한 두 실수를 뺄 때 발생하는 유효 숫자 실종
  • How to Learn:
    • 루프를 만 번 돌며 0.1을 더했을 때의 누적 오차를 계산하고, 정밀도가 높은 자료형과의 차이 비교
    • 이차 방정식의 근의 공식에서 b24acb^2 - 4ac 연산 시 정밀도 손실이 발생하는 사례 분석
  • Implement: 부동소수점 비교 시 == 대신 엡실론 임계치를 사용하는 안전한 비교 함수 라이브러리

Advanced

Core: 엔디언과 하드웨어 정렬 (Endianness & Alignment)

  • Why to Learn: 서로 다른 CPU 아키텍처 간에 데이터를 주고받을 때 숫자가 뒤집히는 파괴적 버그를 막기 위해서입니다.
  • What to Learn:
    • 빅 엔디언(Big Endian) vs 리틀 엔디언(Little Endian)의 메모리 저장 물리
    • 바이트 스와핑(Byte Swapping) 기술과 네트워크 바이트 순서
    • 데이터 정렬(Alignment) 제약: 왜 특정 비트 단위로 수치를 배치해야 성능이 유지되는가
  • How to Learn:
    • 메모리 덤프를 통해 4바이트 정수 0x12345678이 실제 램 주소에 어떤 순서로 찍히는지 확인 실습
    • C 언어 Struct의 멤버 순서에 따라 숫자가 포함된 전체 크기가 패딩(Padding)으로 인해 늘어나는 현상 분석
  • Implement: 시스템의 엔디언을 감지하고 바이너리 데이터를 각 타겟 아키렉처에 맞게 변환하는 패킷 인코더

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core)
Two's Complement 어떤 수를 모두 반전시키고 1을 더해 만든, 양수 가산기로 음수 연산이 가능한 물리 체계입니다. 기본 음수 구현 Integer Binary '단순한 반전'과 혼동 P1:CS2023/DataRepresentation core
IEEE 754 과학적 표기법을 이진 비트로 표준화하여 실수를 표현하는 전 세계적인 부동소수점 물리 규약입니다. 추천 실수 표준 Float / Double Precision 모든 실수를 표현한다고 오해 P1:CS2023/DataRepresentation core
Machine Epsilon 하드웨어가 인식할 수 있는 최소한의 수치적 차이를 나타내는 물리적 정밀도 상항선입니다. 실무 오차 기준 Precision Rounding 단순히 '작은 수'라고 오해 Industry Std core
Little Endian 수치의 하위 바이트(LSB)를 메모리의 가장 낮은 주소부터 채우는 물리적 저장 방식입니다. 심화 아키텍처 규격 Big Endian Swapping 수치의 '좌우'만 바뀐다고 오해 P1:CS2023/DataRepresentation core

8. References

Primary

Secondary

  • [What Every Computer Scientist Should Know About Floating-Point Arithmetic] David Goldberg — The definitive paper.
  • [Computer Systems: A Programmer's Perspective] Bryant & O'Hallaron — Data representation for devs.

Industry

  • [IEEE 754-2019 Standard for Floating-Point Arithmetic] — Official industry specification.
  • [ISO/IEC 9899 (C Standard) - Numerical limits] — Language level constraints.

9. Final Checklist

Primary

  • 32비트 Integer 최대값(23112^{31}-1)에서 1을 더했을 때 발생하는 부호 비트 전이의 물리적 결과를 수식으로 설명할 수 있는 가? (P1)
  • 0.5, 0.25와 같이 2의 거듭제곱 역수들로 구성된 실수는 왜 부동소수점 오차 없이 완벽히 표현되는지 입증 가능한가? (P1)

Secondary

  • 단정도(32비트)와 배정도(64비트)를 선택할 때, 가수부 비트 차이가 실제 유효 숫자 정밀도에 미치는 수리적 영향을 소통 가능한가?
  • 부동소수점 연산에서 결합 법칙(Associative Law)이 성립하지 않는 물리적 사례((a+b)+ca+(b+c)(a+b)+c \neq a+(b+c))를 증명할 수 있는가?

Industry

  • 네트워크 통신 프로토콜 설계 시, 이기종 CPU 간 데이터 전송을 위해 'Network Byte Order'로 변환해야 하는 필연성을 제안할 수 있는 가? (SFIA)
  • 금융 시스템에서 통화 연산을 수행할 때 부동소수점 대신 고정소수점(Fixed-point)이나 정수(Cents 단위)를 써야 하는 물리적 보안 근거를 기술할 수 있는 가?