1️⃣ 프로그래밍의 본질
프로그래밍이란?
- 데이터를 저장하고, 가공하고, 출력하는 작업.
- 데이터를 효율적으로 다루는 것이 프로그래밍의 핵심.
- 데이터는 결국 메모리에 저장되며, 컴퓨터는 이 데이터를 CPU로 불러와 가공한 뒤 다시 저장하거나 출력.
2️⃣ 컴퓨터의 데이터 저장 방식 - 비트와 바이트
비트(Bit)
- 컴퓨터가 다루는 가장 작은 단위.
- 전기 신호 유무로 표현 (0=OFF, 1=ON)
- 1비트당 0 또는 1 하나만 표현 가능.
바이트(Byte)
- 8비트 = 1바이트 (Byte)
- 대부분의 데이터는 최소 1바이트 단위로 저장.
비트와 바이트 단위 정리
| 단위 | 크기 |
|---|
| 1 bit | 0 또는 1 |
| 1 byte | 8 bits |
| 1 word | 2 bytes (16 bits) |
| 1 dword (double word) | 4 bytes (32 bits) |
| 1 qword (quad word) | 8 bytes (64 bits) |
3️⃣ 정수의 저장 방식 (양수와 음수)
양수 표현
- 그냥 이진수(Binary)로 저장.
- 1바이트로 10을 저장하는 경우:
- 00001010 (2진수)
- 2+8=10 (각 자리값을 더한 결과)
음수 표현 - 2의 보수법
- 컴퓨터는 2의 보수를 사용해 음수를 표현.
- 최상위 비트(MSB, Most Significant Bit)를 부호 비트로 사용.
2의 보수 구하는 방법
| 단계 | 설명 |
|---|
| 1 | 양수의 이진수 구하기 |
| 2 | 모든 비트 반전 (1의 보수 만들기) |
| 3 | 그 결과에 1 더하기 (2의 보수 완성) |
예시: -24 표현
- 24 → 0001 1000
- 1의 보수 → 1110 0111
- 2의 보수 (1 더하기) → 1110 1000 = -24

최상위 비트를 그냥 부호로 쓰지 않는 이유
- 단순히 MSB로 부호만 나타내면 +0과 -0이 생김 → 비효율적
- 2의 보수는 음수 표현 문제를 해결하는 방법.
62 예시
- 8비트로 -62 표현 과정
- 최상위 비트 = -128
- 나머지 켜진 비트 = 64 + 2
- 합계 = -128 + 64 + 2 = -62
4️⃣ 진수 (Number System)
10진수 (Decimal)
- 일상적으로 쓰는 숫자 체계.
- 0~9까지 10개 숫자 사용.
- 숫자 뒤에 진법 표시 필요 없음 (기본값이니까).
2진수 (Binary)
- 컴퓨터 내부 데이터 표현 방법.
- 0과 1만 사용.
- 앞에 0b 붙여서 표기.
16진수 (Hexadecimal)
- 2진수 표현이 길어지는 문제를 해결.
- 한 자리에서 0~15까지 표현 가능 (0~9, A~F)
- 앞에 0x 붙여서 표기.
진수 변환 규칙
- 2진수 → 16진수 변환
- 2진수 4자리 = 16진수 1자리
- 0b10010101 → 1001 0101 → 0x95
6️⃣ 컴퓨터의 데이터 처리 과정
컴퓨터 구조 3대 구성요소
| 구성요소 | 역할 |
|---|
| CPU | 연산 및 제어 |
| 메모리(RAM) | 데이터 저장 및 처리 중간 저장소 |
| 하드디스크 | 영구 저장소 |
프로그램 실행 과정
- 하드디스크에서 실행파일 로드.
- 메모리로 복사.
- CPU가 명령어 실행.
- 필요시 결과 데이터 다시 저장.
7️⃣ 양수와 음수 저장 정리 표
| 구분 | 양수 저장 | 음수 저장 |
|---|
| 기본 표현법 | 이진수 그대로 | 2의 보수 |
| 최상위 비트 | 0 | 1 |
| 예시 (8비트) | 10 = 00001010 | -10 = 11110110 |
8️⃣ 보수 (Complement) 개념 정리
| 보수 종류 | 설명 | 예시 (1010의 보수) |
|---|
| 1의 보수 | 각 비트 반전 | 0101 |
| 2의 보수 | 1의 보수 + 1 | 0110 |
9️⃣ 2진수/16진수/10진수 변환 연습 예시
| 2진수 | 16진수 | 10진수 |
|---|
| 0b1101 | 0xD | 13 |
| 0b11110000 | 0xF0 | 240 |
| 0b10101010 | 0xAA | 170 |