정수 (Integer) 기초
정수는 수학적으로 소수점 이하의 부분이 없는 수의 집합입니다. 양의 정수, 음의 정수, 그리고 $0$으로 구성됩니다. 컴퓨터 과학에서는 데이터를 처리하는 기본 단위가 되며, $\mathbb{Z}$로 표기합니다.
1. 정수의 정의와 분류
정수는 크게 세 가지 종류로 분류됩니다.
- 양의 정수 (Positive Integers): 자연수(Natural Numbers)와 같은 수로, $1, 2, 3, \dots$ 와 같이 $0$보다 큰 정수입니다.
- $0$ (Zero): 양수도 음수도 아닌 기준이 되는 정수입니다.
- 음의 정수 (Negative Integers): $-1, -2, -3, \dots$ 와 같이 $0$보다 작은 정수입니다.
$$ \mathbb{Z} = {\dots, -3, -2, -1, 0, 1, 2, 3, \dots} $$
[Image of Integer number line]
2. 컴퓨터에서의 정수 표현
컴퓨터는 모든 데이터를 2진수(Binary)로 저장하며, 정수를 표현하는 방식은 그 수의 크기와 부호에 따라 달라집니다.
① 저장 단위 (Size)
C언어의 int나 long처럼, 정수는 정해진 비트 수(예: 8비트, 16비트, 32비트, 64비트)의 메모리 공간에 저장됩니다. 비트 수가 클수록 표현할 수 있는 정수의 범위가 넓어집니다.
② 부호 (Sign) 처리: 2의 보수법
컴퓨터는 음수를 표현하고 뺄셈 연산을 덧셈으로 처리하기 위해 2의 보수(Two's Complement) 방식을 사용합니다.
- 원리: 최상위 비트(MSB, Most Significant Bit)를 부호 비트로 사용하며, $0$이면 양수, $1$이면 음수를 나타냅니다.
- 장점: 뺄셈을 덧셈으로 통합하여 연산 장치(ALU) 설계가 단순해지고 효율적입니다.
예시 (8비트): * 양수 $5$: $\mathbf{0}0000101$ * 음수 $-5$: $00000101$의 2의 보수 $\rightarrow \mathbf{1}1111011$
3. 정수의 활용
- 카운팅 (Counting): 사물의 개수를 세거나 반복 횟수를 제어할 때 사용됩니다.
- 인덱싱 (Indexing): 배열이나 리스트의 위치를 나타낼 때 사용됩니다.
- 비트 연산 (Bitwise Operations): C언어에서 보셨듯이, 정수는 비트 단위로 직접 조작되어 하드웨어 제어에 사용됩니다.