Ryotta's Basic

Circuit
⚡ Circuit 검증완료

title: Data Representation
date: 2025-06-21
category: circuit
tags: [binary, IEEE-754, two's-complement, fixed-point, floating-point]


Data Representation

개요

디지털 시스템은 모든 정보를 이진수(0과 1)로 표현한다. 데이터 표현 방식은 프로세서 설계, 메모리 시스템, 통신 프로토콜 등 컴퓨터 공학 전반에 걸쳐 가장 근본적인 주제이다. 정수 표현(부호 없는 수, 1의 보수, 2의 보수), 부동소수점 표현(IEEE 754), 고정소수점 표현 등 다양한 방법이 있으며, 각각 정밀도, 범위, 하드웨어 복잡도 면에서 서로 다른 트레이드오프를 가진다. 본 문서는 디지털 시스템에서 사용되는 핵심 데이터 표현 방식을 분석한다.

같은 비트 수라도 어떤 표현 규칙을 택하느냐에 따라 해석 가능한 값의 범위와 연산기의 동작이 달라진다. 예를 들어 2의 보수는 정수 가감산기를 단순하게 만들고, IEEE 754는 넓은 동적 범위와 예외 처리를 제공하며, 고정소수점은 제한된 범위 대신 낮은 전력과 짧은 지연을 얻는다. 따라서 데이터 표현은 단순한 저장 형식이 아니라 연산 정확도, 오버플로 처리, 소프트웨어 이식성까지 함께 결정하는 설계 선택이다.

핵심 개념

정수 표현 방식

컴퓨터에서 정수를 표현하는 세 가지 주요 방식이 있다:

Integer Representation
방식 비트 수 표현 범위 특징
부호 없는 수 (Unsigned) N 0 ~ 2^N - 1 가장 단순, 모든 비트가 값의 일부
1의 보수 (Ones' Complement) N -(2^(N-1)-1) ~ 2^(N-1)-1 0이 두 개 (+0, -0) 존재
2의 보수 (Two's Complement) N -2^(N-1) ~ 2^(N-1)-1 현대 CPU의 표준, 0이 하나

부호-크기(sign-magnitude)는 최상위 비트를 부호로 쓰고 나머지를 크기로 쓰는 고전적인 방식이며, 바이어스 표현(offset binary, excess-K)은 값에 고정 오프셋을 더해 저장하는 방식이다. IEEE 754의 지수 필드는 바이어스 표현을 사용한다.

2의 보수 (Two's Complement)

2의 보수는 현대 프로세서에서 부호 있는 정수를 표현하는 표준 방식이다. 음수 표현을 위해 양수의 비트를 반전시킨 후 1을 더한다:

  • 장점: 덧셈과 뺄셈이 동일한 하드웨어로 처리 가능, +0과 -0이 동일
  • 구현: MSB(Most Significant Bit)가 부호 비트 (0=양수, 1=음수)
  • 오버플로: 결과의 부호와 입력 부호가 어긋나면 의심할 수 있으며, 하드웨어는 캐리와 부호 비트를 함께 본다

예시 (8비트):

+5  = 0000 0101
-5  = 1111 1011  (반전: 1111 1010 + 1)

부동소수점 (IEEE 754)

부동소수점은 실수를 근사 표현하기 위한 표준이다. 세 가지 기본 형식이 있다:

IEEE 754 Formats
형식 비트 수 지수 비트 가수 비트 지수 범위 용도
단정밀도 (Single) 32 8 23 ±127 GPU, 딥러닝
배정밀도 (Double) 64 11 52 ±1023 과학 계산
반정밀도 (Half) 16 5 10 ±15 AI 추론

IEEE 754 단정밀도 구조:

| S (1bit) | Exponent (8bit) | Fraction (23bit) |
|   부호    |    지수 부분    |    가수 부분    |
  • 지수: 편향(Bias) 적용 → 실제 지수 = 저장된 지수 - 127 (단정밀도)
  • 가수: 정규화된 수에서 선행 1을 생략하여 23비트로 24비트 정밀도를 표현한다.
  • 특수 값: Infinity, NaN, ±0, 서브노멀 수
  • 서브노멀(subnormal): 지수 필드가 0인 값으로, 숨은 1을 쓰지 않아 언더플로 구간을 메운다.
  • 반올림 모드: 기본은 ties to even이며, toward 0 / toward +∞ / toward -∞도 정의된다.
  • 예외 플래그: invalid, divide-by-zero, overflow, underflow, inexact 같은 상태를 통해 계산 이상을 소프트웨어에 전달한다.

고정소수점 (Fixed-Point)

고정소수점은 소수점 위치를 고정하여 실수를 표현한다:

  • Q 형식: Qm.n → 정수 부분 m비트, 소수 부분 n비트
  • 스케일 해석: 값 = 저장 정수 × 2^-n 으로 읽는다.
  • 장점: 부동소수점보다 하드웨어가 단순, 지연 시간이 작음
  • 단점: 표현 범위가 제한적, 오차 누적 가능
  • 예시: Q1.15는 16비트 signed 정수에 소수부 15비트를 둔 형식이다.
  • 연산: 덧셈/뺄셈은 같은 스케일에서 바로 가능하고, 곱셈 후에는 시프트로 스케일을 복원한다.
  • 오버플로 처리: 일반 정수처럼 wrap-around가 일어나며, 일부 DSP는 saturation arithmetic을 사용한다.
  • 용도: DSP, 임베디드 시스템, 딥러닝 양자화

데이터 표현 비교 분석

항목 정수 (2의 보수) 고정소수점 부동소수점
정밀도 이산적 (1) 가변적 가변적 (상대적)
범위 제한적 제한적 매우 넓음
하드웨어 복잡도 낮음 중간 높음
연산 속도 빠름 빠름 느림
메모리 사용 효율적 효율적 비효율적
오차 없음 있음 (반올림) 있음 (부동소수점 오차)
용도 카운터, 주소, 제어 DSP, 임베디드 과학 계산, ML

동작 원리

2의 보수 덧셈 회로

2의 보수 덧셈은 일반적인 이진 덧셈과 동일한 회로로 수행된다. Carry-out은 무시된다:

  0101 (+5)
+ 1101 (-3)
-------
 10010 → 0010 (+2, carry 무시)

부동소수점 덧셈 과정

  1. 지수 정렬: 작은 지수의 수를 오른쪽으로 시프트하여 지수를 맞춤
  2. 가수 덧셈: 지수가 같은 상태에서 가수를 더함
  3. 정규화: 결과가 1.xxxx 형태가 되도록 시프트하고 지수 조정
  4. 반올림: 가수 비트 수에 맞게 반올림

NaN과 Infinity 판별

IEEE 754에서 특수 값을 구분하는 규칙:
- Infinity: 지수 = 최대값 (0xFF), 가수 = 0
- NaN: 지수 = 최대값 (0xFF), 가수 ≠ 0
- Zero: 지수 = 0, 가수 = 0 (양수/음수 Zero 모두 존재)

부호 확장과 스케일 유지

2의 보수 정수를 더 넓은 비트 폭으로 옮길 때는 최상위 비트를 반복하는 부호 확장(sign extension)을 사용한다. 예를 들어 8비트 1111 1011(-5)을 16비트로 확장하면 1111 1111 1111 1011이 된다. 이 규칙 덕분에 같은 가산기 구조를 8비트, 16비트, 32비트, 64비트로 확장해도 값의 의미가 유지된다.

고정소수점은 부호 확장과 함께 소수점 위치도 보존해야 한다. Q1.15 값을 Q5.15로 옮기면 정수부 비트 수만 늘고 스케일 2^-15는 유지된다. 반대로 서로 다른 Q 형식을 더하려면 먼저 같은 스케일로 정렬해야 하며, 그렇지 않으면 정수는 맞아도 실제 물리량 해석이 틀어진다.

장단점

장점 단점
2의 보수: 하드웨어가 단순하고 빠름 정수: 표현 범위가 비트 수에 비례
IEEE 754: 매우 넓은 표현 범위 부동소수점: 오차 누적 가능
고정소수점: 저전력 임베디드에 적합 고정소수점: 범위가 고정되어 유연하지 않음
표준화로 이식성 보장 부동소수점: 하드웨어 복잡도가 높음

관련 기술

  • IEEE 754-2019: 부동소수점 산술 표준
  • IEEE 754-2008: binary16(반정밀도) 형식 추가
  • ISO/IEC 60559: IEEE 754와 정합되는 국제 부동소수점 표준
  • IBM z/Architecture: BFP (Binary Floating Point) 형식
  • ARM NEON/SVE: SIMD 부동소수점 연산
  • Intel SSE/AVX: 128/256비트 부동소수점 패키지
  • DSP Q-format: 고정소수점 필터와 제어 연산에서 널리 쓰이는 스케일 표현
  • William Kahan, "IEEE Standard 754 for Binary Floating-Point Arithmetic": 설계 배경과 수치적 의미를 설명하는 대표 자료

핵심 정리

  1. 2의 보수는 현대 CPU의 부호 있는 정수 표현 표준으로, 덧셈과 뺄셈을 동일 회로로 처리할 수 있어 하드웨어 효율이 높다.
  2. IEEE 754는 부동소수점의 국제 표준으로, 단정밀도(32비트)와 배정밀도(64비트)가 널리 사용된다.
  3. 고정소수점은 범위는 제한적이지만 하드웨어 복잡도가 낮아 DSP와 임베디드 시스템에서 유용하다.
  4. 데이터 표현 선택은 정밀도, 범위, 하드웨어 복잡도, 전력 소비 간의 트레이드오프에 의해 결정된다.
  5. 부동소수점 오차(Floating Point Error)는 반올림 오차와 대표성 오차로 구성되며, 수치 안정성에 주의가 필요하다.