컴퓨터의 데이터 표현: 부동 소수점과 문자 인코딩
|
1 min read
컴퓨터가 실수를 표현할 때 발생하는 부동 소수점의 오차 원인과, 0과 1로 문자를 표현하는 인코딩/디코딩 방식을 알아봅니다.
1. 부동 소수점(Floating Point)의 함정
파이썬에서 다음과 같은 코드를 실행해 본 적이 있나요?
python
a = 0.1
b = 0.2
c = 0.3
print(a + b == c) # 결과는 False!분명 0.1 + 0.2는 0.3인데 왜
text
False- 원인: 십진수 소수를 이진수로 변환할 때, 어떤 소수들은 무한 소수가 되어 딱 떨어지지 않습니다. 컴퓨터는 메모리 한계상 이를 특정 지점에서 끊어서 저장하므로 아주 미세한 오차가 발생하게 됩니다.
- 구조: 부동 소수점은 수를 **가수(Significand)**와 **지수(Exponent)**로 나누어 표현하며, IEEE 754 표준을 주로 따릅니다.
2. 문자를 0과 1로: 인코딩과 디코딩
문자를 컴퓨터가 이해할 수 있는 숫자로 바꾸는 과정을 인코딩, 그 반대를 디코딩이라고 합니다.
🔹 아스키(ASCII) 코드
- 초창기 표준으로 알파벳, 숫자, 일부 특수문자 등 128개의 문자를 7비트로 표현합니다.
- 한글이나 다른 나라 언어를 표현하기에는 턱없이 부족하다는 단점이 있습니다.
🔹 유니코드(Unicode)와 UTF-8
- 유니코드: 전 세계 모든 문자에 고유한 번호(코드 포인트)를 부여한 거대한 문자 집합입니다.
- UTF-8: 유니코드를 실제 0과 1로 인코딩하는 가장 대중적인 방식입니다. 가변 길이를 지원하여 영문은 1바이트, 한글은 3바이트 등 효율적으로 데이터를 저장합니다.