Data Representation
๊ฐ์
๋์งํธ ์์คํ ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์ด์ง์(0๊ณผ 1)๋ก ํํํ๋ค. ๋ฐ์ดํฐ ํํ ๋ฐฉ์์ ํ๋ก์ธ์ ์ค๊ณ, ๋ฉ๋ชจ๋ฆฌ ์์คํ , ํต์ ํ๋กํ ์ฝ ๋ฑ ์ปดํจํฐ ๊ณตํ ์ ๋ฐ์ ๊ฑธ์ณ ๊ฐ์ฅ ๊ทผ๋ณธ์ ์ธ ์ฃผ์ ์ด๋ค. ์ ์ ํํ(๋ถํธ ์๋ ์, 1์ ๋ณด์, 2์ ๋ณด์), ๋ถ๋์์์ ํํ(IEEE 754), ๊ณ ์ ์์์ ํํ ๋ฑ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ, ๊ฐ๊ฐ ์ ๋ฐ๋, ๋ฒ์, ํ๋์จ์ด ๋ณต์ก๋ ๋ฉด์์ ์๋ก ๋ค๋ฅธ ํธ๋ ์ด๋์คํ๋ฅผ ๊ฐ์ง๋ค. ๋ณธ ๋ฌธ์๋ ๋์งํธ ์์คํ ์์ ์ฌ์ฉ๋๋ ํต์ฌ ๋ฐ์ดํฐ ํํ ๋ฐฉ์์ ๋ถ์ํ๋ค.
๊ฐ์ ๋นํธ ์๋ผ๋ ์ด๋ค ํํ ๊ท์น์ ํํ๋๋์ ๋ฐ๋ผ ํด์ ๊ฐ๋ฅํ ๊ฐ์ ๋ฒ์์ ์ฐ์ฐ๊ธฐ์ ๋์์ด ๋ฌ๋ผ์ง๋ค. ์๋ฅผ ๋ค์ด 2์ ๋ณด์๋ ์ ์ ๊ฐ๊ฐ์ฐ๊ธฐ๋ฅผ ๋จ์ํ๊ฒ ๋ง๋ค๊ณ , IEEE 754๋ ๋์ ๋์ ๋ฒ์์ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํ๋ฉฐ, ๊ณ ์ ์์์ ์ ์ ํ๋ ๋ฒ์ ๋์ ๋ฎ์ ์ ๋ ฅ๊ณผ ์งง์ ์ง์ฐ์ ์ป๋๋ค. ๋ฐ๋ผ์ ๋ฐ์ดํฐ ํํ์ ๋จ์ํ ์ ์ฅ ํ์์ด ์๋๋ผ ์ฐ์ฐ ์ ํ๋, ์ค๋ฒํ๋ก ์ฒ๋ฆฌ, ์ํํธ์จ์ด ์ด์์ฑ๊น์ง ํจ๊ป ๊ฒฐ์ ํ๋ ์ค๊ณ ์ ํ์ด๋ค.
ํต์ฌ ๊ฐ๋
์ ์ ํํ ๋ฐฉ์
์ปดํจํฐ์์ ์ ์๋ฅผ ํํํ๋ ์ธ ๊ฐ์ง ์ฃผ์ ๋ฐฉ์์ด ์๋ค:
| ๋ฐฉ์ | ๋นํธ ์ | ํํ ๋ฒ์ | ํน์ง |
|---|---|---|---|
| ๋ถํธ ์๋ ์ (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)
๋ถ๋์์์ ์ ์ค์๋ฅผ ๊ทผ์ฌ ํํํ๊ธฐ ์ํ ํ์ค์ด๋ค. ์ธ ๊ฐ์ง ๊ธฐ๋ณธ ํ์์ด ์๋ค:
| ํ์ | ๋นํธ ์ | ์ง์ ๋นํธ | ๊ฐ์ ๋นํธ | ์ง์ ๋ฒ์ | ์ฉ๋ |
|---|---|---|---|---|---|
| ๋จ์ ๋ฐ๋ (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.xxxx ํํ๊ฐ ๋๋๋ก ์ํํธํ๊ณ ์ง์ ์กฐ์
- ๋ฐ์ฌ๋ฆผ: ๊ฐ์ ๋นํธ ์์ ๋ง๊ฒ ๋ฐ์ฌ๋ฆผ
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": ์ค๊ณ ๋ฐฐ๊ฒฝ๊ณผ ์์น์ ์๋ฏธ๋ฅผ ์ค๋ช ํ๋ ๋ํ ์๋ฃ
ํต์ฌ ์ ๋ฆฌ
- 2์ ๋ณด์๋ ํ๋ CPU์ ๋ถํธ ์๋ ์ ์ ํํ ํ์ค์ผ๋ก, ๋ง์ ๊ณผ ๋บ์ ์ ๋์ผ ํ๋ก๋ก ์ฒ๋ฆฌํ ์ ์์ด ํ๋์จ์ด ํจ์จ์ด ๋๋ค.
- IEEE 754๋ ๋ถ๋์์์ ์ ๊ตญ์ ํ์ค์ผ๋ก, ๋จ์ ๋ฐ๋(32๋นํธ)์ ๋ฐฐ์ ๋ฐ๋(64๋นํธ)๊ฐ ๋๋ฆฌ ์ฌ์ฉ๋๋ค.
- ๊ณ ์ ์์์ ์ ๋ฒ์๋ ์ ํ์ ์ด์ง๋ง ํ๋์จ์ด ๋ณต์ก๋๊ฐ ๋ฎ์ DSP์ ์๋ฒ ๋๋ ์์คํ ์์ ์ ์ฉํ๋ค.
- ๋ฐ์ดํฐ ํํ ์ ํ์ ์ ๋ฐ๋, ๋ฒ์, ํ๋์จ์ด ๋ณต์ก๋, ์ ๋ ฅ ์๋น ๊ฐ์ ํธ๋ ์ด๋์คํ์ ์ํด ๊ฒฐ์ ๋๋ค.
- ๋ถ๋์์์ ์ค์ฐจ(Floating Point Error)๋ ๋ฐ์ฌ๋ฆผ ์ค์ฐจ์ ๋ํ์ฑ ์ค์ฐจ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ์์น ์์ ์ฑ์ ์ฃผ์๊ฐ ํ์ํ๋ค.