컴퓨터가 숫자를 저장하고 처리한다는 것은, 결국 비트 단위의 전기 신호 조합으로 숫자의 의미를 부여한다는 것이다. 숫자라고 해서 별다른 형태가 있는 것이 아니라, 이진수로 변환된 일련의 0과 1이 특정 규칙에 따라 해석될 뿐이다.
본문에서는 컴퓨터가 정수, 음수, 소수를 어떻게 이진수로 표현하는지 살펴보며, 2의 보수, 고정소수점, 부동소수점과 같은 핵심 개념을 다룬다.
정수 표현의 기본: 부호 없는 정수
가장 단순한 숫자 표현은 양의 정수만을 다루는 것이다. 예를 들어, 8비트 공간에서 0~255까지의 수를 다음과 같이 표현할 수 있다.
10진수 : 0 1 2 3 ... 254 255
2진수 : 00000000, 00000001, 00000010, ..., 11111110, 11111111
이 방식은 부호 없는 (unsigned) 정수 표현이라 부른다. 매우 직관적이고 단순하지만, 음수를 표현할 수 없다는 단점이 있다.
음수를 표현하는 방법들
컴퓨터가 음수를 다룰 수 있으려면, 이진수를 음수로 표현할 수 있는 방법이 필요하다.
1. 부호-크기(Sign-Magnitude)
- 첫 번째 비트를 부호비트로 사용(0: 양수, 1: 음수)
- 나머지 비트는 수의 크기를 표현
- 예: 8비트 기준
- +5 → 00000101
- -5 → 10000101
- 문제점: 0이 두 번 표현되어 연산이 비효율적임
2. 1의 보수(Ones' Complement)
- 음수를 만들기 위해 양수 이진수의 모든 비트를 반전
- +5 → 00000101, -5 → 11111010
3. 2의 보수(Two's Complement)
- 1의 보수에서 +1을 추가하여 음수를 표현
- +5 → 00000101
- -5 → 11111011
- 장점
- 0이 유일하게 하나만 존재함
- 덧셈 회로 하나로 덧셈/뺄셈 모두 처리 가능
- 실제 현대 컴퓨터는 거의 모두 2의 보수를 사용함
- 2의 보수 계산 방법
- 절댓값의 이진수를 두한다.
- 비트를 반전한다(1의 보수).
- +1을 더한다.
고정소수점(Fixed Point): 소수 표현의 단순한 방법
고정소수점은 소수점을 특정 자릿수에 고정시켜두고 정수처럼 처리하는 방식이다(정수 + 소수).
- 예: 8비트 정수 중 마지막 4비트를 소수점 이하로 간주
- 00011010 → 10진수로 0001.1010 = 1 + 0.5 + 0.125 = 1.625
- 장점
- 연산 속도가 빠름(정수 연산처럼 처리 가능)
- 회로 설계가 간단함
- 단점
- 정밀도나 범위 선택이 고정됨(유연성 없음)
- 표현 가능한 값의 범위가 제한적임
*임베디드 시스템이나 DSP(디지털 신호 처리) 분야에서 주로 사용된다.
*임베디드 시스템: 특정 기능을 수행하기 위해 하드웨어와 소프트웨어가 결합된 시스템으로, 어떤 기기에 내장(embedded)되어서 하나의 역할만 집중적으로 수행하는 작은 컴퓨터이다. 우리가 흔히 생각하는 데스크탑 컴퓨터나 노트북 같은 범용 컴퓨터와는 조금 다른 개념이다.
(예시: 전자레인지의 조리 시간 제어, 스마트 TV 리모컨의 채널/볼륨 제어, 세탁기의 물온도 및 회전속도 조절, 스마트워치의 심박수 측정 및 간단한 앱 실행 등)
부동소수점(Floating Point): 실수 표현의 표준
부동소수점은 소수점의 위치를 "부동", 즉 자유롭게 이동시켜 표현할 수 있는 방식이다. 우리가 수학에서 사용하는 과학적 표기법과 유사하다.
IEEE 754 표준 구조(32비트, float 기준)
구성 요소 | 비트 수 | 의미 |
부호(Sign) | 1비트 | 양수/음수 구분 |
자수(Exponent) | 8비트 | 소수점 이동량(실제는 biased 방식) |
가수(Mantissa) | 23비트 | 실질적인 수치 정보 |
- 예: 3.75 = 1.11 × 2¹
- 부호: 0 (양수)
- 지수: 127 + 1 = 128 → 10000000
- 가수: .11 → 110000...0 (23비트 채움)
- 장단점
- 매우 넓은 표현 범위
- 소수 계산 가능
- 부정확한 근사치(오차 발생 가능)
- 연산 속도가 고정소수점보다 느림
- 사용처: 과학 계산, 그래픽, AI 연산 등 정밀하고 큰 수가 필요한 분야
실제 프로그래밍에서는?
정수 표현: int, short, long 등 → 대부분 2의 보수 기반
실수 표현: float, double → IEEE 754 부동소수점
정수든 실수든, 컴퓨터는 단순한 0과 1의 조합을 정해진 규칙에 따라 해석함으로써 우리가 사용하는 숫자를 이해하고 처리할 수 있다. 이진수 표현 방식과 숫자 코딩 체계를 이해하는 것은, 이후 메모리 구조, CPU 연산, 고급 프로그래밍의 기반이 되는 개념이다.
'컴퓨터공학 > 컴퓨터 구조와 작동 원리' 카테고리의 다른 글
[컴퓨터공학] 컴퓨터 개념 기초 | 메모리 계층 구조 (0) | 2025.03.24 |
---|---|
[컴퓨터공학] 컴퓨터 개념 기초 | CPU가 명령어를 실행하는 방법 - Fetch, Decode, Execute 사이클 완전 정복 (0) | 2025.03.24 |
[컴퓨터공학] 컴퓨터 개념 기초 | 비트, 바이트, 이진수 개념 (0) | 2025.03.24 |
[컴퓨터공학] 컴퓨터 개념 기초 | 하드웨어와 소프트웨어 (0) | 2025.03.22 |