컴퓨터/정보>고등 정보>컴퓨터의 데이터 표현
개념 정리

컴퓨터의 데이터 표현

단원 개요
텍스트를 저장하는 문자 인코딩(ASCII, Unicode, UTF-8)의 구조와 실수를 근사 표현하는 IEEE 754 부동소수점 표준 및 오차 원리를 다룹니다.
선수 개념
필수 키워드:7비트(27=1282^7 = 128개)모지바케(Mojibake)UnicodeCode PointUTF-8가변 길이 인코딩(1~4바이트)1바이트2바이트3바이트4바이트
1

문자 인코딩의 발전: ASCII에서 Unicode와 UTF-8까지

•
ASCII (American Standard Code for Information Interchange):
•
영문 알파벳 대소문자, 숫자, 특수기호, 제어문자를 7비트(27=1282^7 = 128개)로 정의한 최초의 표준입니다 (예: 'A' = 65(0x41), 'a' = 97(0x61), '0' = 48(0x30)).
•
영어권 외 국가들이 각자 확장 인코딩(한국 EUC-KR/CP949 등)을 만들면서 다국어 문서가 깨지는 모지바케(Mojibake) 현상이 발생했습니다.
•
Unicode와 UTF-8 (가변 길이 인코딩):
•
Unicode: 전 세계 모든 문자와 이모지에 고유 번호(Code Point, 예: '가' = U+AC00)를 부여한 국제 표준 사전입니다.
•
UTF-8: 유니코드 번호를 실제 바이트열로 변환하는 가변 길이 인코딩(1~4바이트) 방식입니다.
•
영문·숫자(ASCII 영역): 1바이트 (기존 ASCII와 100% 하위 호환되어 네트워크 전송량 절감).
•
유럽·중동 문자: 2바이트.
•
한글·한자·일본어(CJK): 3바이트 (UTF-16에서는 한글이 2바이트이나 웹 표준인 UTF-8에서는 3바이트).
•
이모지(Emoji) 및 고대 문자: 4바이트.
핵심 원리
ASCII 코드 필수 암기값: 숫자 '0'은 48(0x30), 대문자 'A'는 65(0x41), 소문자 'a'는 97(0x61)입니다. 대문자와 소문자는 정확히 32(2^5, 즉 6번째 비트 하나)만큼 차이가 납니다.
2

실수 표현의 표준: IEEE 754 부동소수점 (Floating-Point)

실수를 1.M×2E1.M \times 2^{E} 형태로 정규화(Normalization)하여 소수점의 위치를 유동적으로 이동시키며 넓은 범위의 수를 표현합니다.

•
32비트 단정밀도 (Single Precision, float) 구조:
1
부호 비트 (Sign, 1비트): 양수면 00, 음수면 11.
2
지수부 (Exponent, 8비트): 실제 지수 ee에 바이어스(Bias = 127)를 더한 값(E=e+127E = e + 127)을 부호 없는 정수로 저장합니다.
3
가수부 (Mantissa / Fraction, 23비트): 정규화된 1.xxxx21.xxxx_2에서 소수점 앞의 정수 11은 항상 고정되어 있으므로 생략(Hidden Bit / 묵시적 1)하고, 소수점 아래 비트열만 왼쪽부터 채워 넣습니다 (정밀도 1비트 이득!).
•
64비트 배정밀도 (Double Precision, double): 부호 1비트 + 지수부 11비트(바이어스 1023) + 가수부 52비트로 구성되어 유효숫자 약 15~17자리의 높은 정밀도를 제공합니다.
풀이

1) 부호 비트 결정: 음수이므로 부호 비트 S = 1입니다.

2) 절댓값 13.625를 2진수로 변환:

정수부 13 = 8 + 4 + 1 = 1101₂

소수부 0.625 = 0.5(2⁻¹) + 0.125(2⁻³) = .101₂

따라서 13.625₁₀ = 1101.101₂입니다.

3) 정규화(소수점 앞을 1 하나로 만듦):

1101.101₂ = 1.101101₂ × 2³ (실제 지수 e = 3)

4) 지수부(8비트) 계산: Bias 127을 더하면 E = 3 + 127 = 130 = 10000010₂.

5) 가수부(23비트) 결정: 정수부 1을 생략한 소수점 이하 101101 뒤에 0을 17개 채웁니다.

결과: 1 | 10000010 | 10110100000000000000000

3

부동소수점 반올림 오차(Round-off Error)와 실무 해결책

•
왜 0.1 + 0.2 == 0.3이 False가 될까?
•
10진수 소수 0.1100.1_{10}을 2진수로 변환하면 0.0001100110011…20.0001100110011\dots_2처럼 00110011이 끝없이 반복되는 무한 순환소수가 됩니다.
•
가수부의 23비트(또는 52비트) 유한한 공간에 이를 잘라 저장하면서 미세한 절단·반올림 오차가 발생하여 0.1 + 0.2 = 0.30000000000000004가 됩니다.
•
실무 및 코딩 테스트 대응 원칙:
1
실수 동등 비교 금지: a == b 대신 두 수의 차이가 매우 작은 허용 오차(Epsilon) 이내인지 확인하는 abs(a - b) < 1e-9 방식을 사용해야 합니다.
2
금융·결제 시스템: 단 1원의 오차도 허용되지 않는 은행·결제 도메인에서는 float/double 사용이 엄격히 금지되며, 정수형(센트/원 단위 long)으로 환산하거나 Python Decimal, Java BigDecimal 같은 10진 고정소수점 연산 객체를 사용합니다.
주의할 점
금융/회계 프로그램이나 이커머스 정산 로직에서 float이나 double 타입을 사용하면 누적 반올림 오차로 인해 금액이 어긋나는 치명적 결함이 발생합니다. 반드시 정수(Integer)나 BigDecimal/Decimal 타입을 사용하세요.

핵심 요약

  • ✓
    UTF-8은 가변 길이(1~4바이트) 유니코드 인코딩으로 영문은 1바이트(ASCII 호환), 한글은 3바이트로 표현한다.
  • ✓
    IEEE 754 단정밀도(32비트)는 부호(1비트), 지수부(8비트, Bias 127), 가수부(23비트, 묵시적 1 생략)로 구성된다.
  • ✓
    0.1 같은 10진 소수는 2진수 변환 시 무한소수가 되어 부동소수점 반올림 오차(Round-off Error)를 유발한다.
  • ✓
    실수 비교 시에는 == 대신 epsilon(1e-9) 오차 범위를 비교하고, 금융 계산에는 Decimal/정수 연산을 사용해야 한다.

설명 다음에는 직접 풀어 보세요

함께 풀기와 자기 설명을 거쳐 새 문제에 도전해요. 막힌 부분은 보충하고, 다른 날 다시 기억하는지 확인할 수 있어요.

이 단원의 수업 시작하기 →
5문항 연습 세트

컴퓨터의 데이터 표현 단원 연습 문제

개념을 읽은 뒤 연습 문제로 이해한 내용을 확인해 보세요. 한 세트는 5문항이며, 답안을 제출하면 정답과 풀이를 볼 수 있습니다.

한 세트 5문항 단계별 상세 해설 시험지 PDF 인쇄 지원

참고 근거와 확인 범위

설명·예제·문제 구성 및 오류 수정 책임: 프리런. 위 자료는 표시한 주제를 확인하거나 더 읽기 위한 근거이며, 외부 기관의 공식 수업이나 감수본을 뜻하지 않습니다.

참고 자료 연결 점검: 2026-11-02. 제작 방식·검수 범위와 수정 기록에서 확인 범위를 볼 수 있습니다. 오류는 상단의 의견 보내기 또는 contact@freelearn.io로 알려 주세요.