1. 목표 및 개요

우리는 앞서 컴퓨터가 '계산기'에서 출발했고, 기계의 동작을 제어하는 '프로그램'을 발전 과정을 배웠습니다. 

🎯 이번 섹션의 핵심 목표

  • 전기의 논리: 단순한 전기 스위치가 어떻게 '판단'을 하는가? (부울 대수와 논리 게이트)
  • 계산의 원리: 전기로 더하기(+)를 하는 방법 (가산기)
  • 이진수의 세계: 왜 컴퓨터는 10진수가 아닌 2진수를 쓰는가?

이 과정을 이해하면, "코딩은 결국 전기를 제어하는 행위"라는 프로그래밍의 본질을 깨닫게 됩니다.

 

2. 전기 신호와 이진수

2.1 전기 신호는 이진수로 나타낼 수 있다

컴퓨터는 전기로 동작합니다. 전압이 충분히 높으면 ON (1), 낮으면 OFF (0)로 인식합니다.

이 단순한 물리적 상태를 숫자로 표현한 것이 바로 2진수(Binary)입니다.

 

3. 전기 신호가 기계를 다루는 방법

3.1 이론의 탄생 : 조지 불의 생각의 법칙

1854년, 영국의 수학자 조지 불(George Boole)은 인간의 논리적 사고를 수학 공식으로 만들 수 있다고 주장했습니다.

 

3.2 논리의 시각화 : 자동 수위 조절 시스템

부울 대수가 어떻게 실제 기계 제어에 쓰이는지 '댐 수문 제어 시스템' 예시로 살펴봅시다.

🌊 수문 개방 조건 (알고리즘)

  1. 조건 1: 댐 수위가 높고(AND) 비가 오면 ➡ 수문을 연다.
  2. 조건 2: (OR) 비가 오면 ➡ 수문을 연다.

이 논리를 표로 정리한 것이 진리표(Truth Table)입니다.

모든 경우의 수를 표로 정리하면, 컴퓨터가 언제 수문을 열지(1) 명확히 알 수 있습니다.

X (댐 수위) Y (비) Z (논 수위) F (수문 개방) 비고 (작동 원인)
1 1 1 1 댐 수위 높고 비가 옴 
1 1 0 1 두 조건 모두 만족 (비 + 물 부족)
1 0 1 0 만족하는 조건 없음
1 0 0 1 논에 물 부족
0 1 1 0 만족하는 조건 없음
0 1 0 1 논에 물 부족
0 0 1 0 만족하는 조건 없음
0 0 0 1 논에 물 부족

 

4. 디지털 논리 설계와 계산 (Computing)

4.1 설계의 혁명 : 클로드 섀넌의 디지털 논리 설계

조지 불의 수학(이론)을 실제 전기 회로(현실)로 가져온 사람은 천재 공학자 클로드 섀넌(Claude Shannon)입니다.

🔌 디지털 논리 설계 (Digital Logic Design, 1937)

"스위치 회로를 설계하는 것은 부울 대수 문제를 푸는 것과 정확히 같다."

그는 AND, OR, NOT과 같은 논리 연산을 전기 스위치 회로로 구현할 수 있음을 증명했고, 이것이 현대 디지털 회로와 컴퓨터 설계의 시초가 되었습니다.

4.2 현실의 회로 : 논리 게이트 (Logic Gate)

클로드 섀넌의 이론에 따라 만들어진 실제 전자 부품을 논리 게이트라고 합니다. 입력된 전기 신호(A, B)를 규칙에 따라 처리하여 결과(S)를 출력합니다.

▲ 반도체의 원리 : 논리 게이트 

 

4.3 논리게이트로 계산하기 (1) - 반가산기(Half Adder)

논리 게이트를 조합하면 전기로 덧셈을 할 수 있습니다.

  • 기능: 2진수 한 자리(1비트) 두 개를 더합니다.
  • 출력: 합(Sum)과 자리올림수(Carry) 두 가지 결과를 내보냅니다.

4.4 논리게이트로 계산하기 (2) - 전가산기(Full Adder)

하지만 실제 덧셈은 아랫자리에서 올라온 숫자도 더해야 합니다. 이를 위해 만든 것이 전가산기입니다.

  • 구조: 두 개의 반가산기와 하나의 OR 게이트를 연결해 만듭니다.
  • 기능: 자리올림수(Carry-in)까지 포함하여 완벽한 덧셈을 수행합니다.
  • 확장: 전가산기를 여러 개 연결하면 32비트, 64비트의 큰 숫자도 계산할 수 있습니다.

[Image of full adder logic circuit]

4.5 모든 계산의 비밀 : 컴퓨터는 덧셈밖에 모른다

놀랍게도 컴퓨터는 '덧셈' 기능 하나로 모든 수학 계산을 처리합니다.

  • 뺄셈: 보수(Complement)를 이용해 음수를 더하는 방식으로 처리
  • 곱셈: 덧셈을 여러 번 반복
  • 나눗셈: 뺄셈을 여러 번 반복

결국 우리가 사용하는 복잡한 AI 연산이나 3D 게임도, 가장 밑바닥에서는 수십억 개의 스위치들이 단순한 덧셈을 초고속으로 반복하고 있는 것입니다.

▲ CPU는 어떻게 작동할까?

▲ 트랜지스터 논리회로 만들기

 

5. 전기신호와 2진수, 그리고 사람과 10진수

5.1 인간과 컴퓨터 : 서로 다른 언어

인간과 컴퓨터는 세상을 이해하는 방식이 근본적으로 다릅니다.

👤 인간 (Human)


10진수(0~9)를 사용합니다.

💻 컴퓨터 (Computer)

스위치(전기)가 2개 상태뿐이라서
2진수(0, 1)를 사용합니다.

다행히도 수학적 원리에 의해 10진수는 2진수로, 2진수는 10진수로 완벽하게 변환할 수 있습니다. 덕분에 전기 신호만 이해하는 컴퓨터가 계산한 결과를, 우리가 이해할 수 있는 10진수 숫자로 화면에 보여줄 수 있는 것입니다.

5.2 이진수는 십진수로 나타낼 수 있다

2진수의 각 자리는 2^n (2의 n제곱)의 가중치를 가집니다. 1(전기 ON)인 자리의 값을 모두 더하면 10진수가 됩니다.

▲ 10진수와 2진수의 변환 원리 (자릿수가 늘어나는 규칙)

영상처럼, 10진수가 9에서 10으로 넘어갈 때 자릿수가 늘어나듯, 2진수도 1에서 10(십진수 2)으로 넘어갈 때 자릿수가 늘어납니다.

2진수 : 1 0 1 1

자릿값 2^3 (8) 2^2 (4) 2^1 (2) 2^0 (1)
계산 8 0 2 1

결과 : 8 + 0 + 2 + 1 = 11 (10진수)

5.3 이진수와 십진수 치환 예시

자주 쓰이는 숫자들의 변환 패턴을 보면 규칙이 보입니다.

5.4 이진수로 덧셈, 뺄셈 하는 방법

① 2진수 덧셈 (Addition)

10진수 덧셈과 원리는 똑같습니다. 단, 1+1=10이 되어 윗자리로 1을 올려주는(Carry) 것만 기억하면 됩니다.

  101 (5)
+ 011 (3)
-------
1000 (8)
② 2진수 뺄셈 (Subtraction)과 보수

컴퓨터는 놀랍게도 뺄셈 회로가 따로 없습니다. 대신 "보수(Complement)"라는 개념을 사용하여 뺄셈을 덧셈으로 바꾸어 계산합니다.

👉 이진수 뺄셈하는 법 : 15단계 (이미지 포함) - wikiHow

 

6. 비트(Bit)와 바이트(Byte) : 데이터의 저장

6.1 컴퓨터의 저장 단위 이해

컴퓨터를 포함한 세상의 모든 기계는 전기 신호가 "있다(ON)", "없다(OFF)"의 2가지 경우의 수 조합으로 작동합니다. 이 2가지 상태를 나타내는 단위를 비트(Bit)라고 합니다.

  • 1 Bit (Binary Digit): 데이터의 최소 단위 (0 또는 1)
  • 1 Byte (8 Bits): 컴퓨터의 최소 처리 단위 (메모리 주소의 기준)

💡 [Deep Dive] 1비트만 저장해도 용량을 차지한다?

우리가 C언어에서 int 변수(정수)에 단순히 숫자 '1'(1비트면 충분함)을 저장해도, 실제 메모리는 4Byte (32bit)를 사용합니다.

이유: CPU가 메모리에서 데이터를 퍼올릴 때, 비트 단위가 아니라 바이트 단위(주소)로 접근하기 때문입니다. 효율적인 처리를 위해 넉넉한 도로(Bus)를 확보하는 것과 같습니다.

6.2 이진수의 경우의 수와 확장

비트가 하나 늘어날 때마다 표현할 수 있는 가지 수(경우의 수)는 2배씩 늘어납니다.

6.3 1Byte(8bit)의 경우의 수와 10진수

컴퓨터의 표준 단위인 1 Byte는 8개의 비트로 이루어져 있습니다. 이는 2^8 = 256가지의 정보를 표현할 수 있음을 의미합니다.

0 ~ 255

(총 256개 숫자 표현 가능)

6.4 소스코드와 메모리 저장

우리가 소스코드에 cNum = 65; 이라고 적으면, 컴퓨터 내부(메모리)에는 실제로 어떻게 저장될까요?

  • 소스코드: char cNum = 65; (10진수)
  • 컴파일: 10을 2진수 0100 0001으로 변환
  • 메모리: 전압이 [OFF-ON-OFF-OFF-OFF-OFF-OFF-ON ] 상태로 저장됨

 

7. 진법의 세계

7.1 비트와 진법 : 0에서 시작하는 세계

컴퓨터 세상의 모든 숫자는 0부터 시작합니다(Zero-base). 진법은 "한 자리에서 표현할 수 있는 숫자의 개수"를 의미합니다.

 

  • 2진법: 0, 1 (2개)
  • 8진법: 0 ~ 7 (8개)
  • 10진법: 0 ~ 9 (10개)
  • 16진법: 0 ~ 9, A ~ F (16개)

 

 

 

 

 

 

 

 

 

7.2 16진수를 사용하는 이유

개발자들이 2진수 대신 16진수(Hexadecimal)를 애용하는 이유는 2진수와 완벽하게 호환되면서 길이가 짧기 때문입니다.

🔑 4비트 = 16진수 1자리

2^4 = 16이므로, 2진수 4자리를 묶으면 정확히 16진수 1자리가 됩니다.

  • 4 bit: 0 ~ 15 ➡ 0 ~ F (16진수 1개)
  • 8 bit (1 Byte): 0 ~ 255 ➡ 00 ~ FF (16진수 2개)
  • 32 bit (4 Byte): 16진수 8개로 표현 가능

7.3 이진수의 한계 : 0의 중복 (+0과 -0)

컴퓨터에서 음수를 표현할 때, 단순히 "맨 앞 비트(MSB)를 부호(1은 음수, 0은 양수)로 쓰자"라고 약속하면(부호화 절대치 방식), 심각한 논리적 오류가 발생합니다.



🚨 0이 두 개가 되는 문제

0000 0000 = +0
1000 0000 = -0

수학적으로 0은 하나여야 하는데, 기계적으로는 두 개의 0이 생겨버립니다. 이는 계산 오류와 공간 낭비를 초래합니다.
이 문제를 해결하기 위해 현대 컴퓨터는 '2의 보수법'을 사용합니다. (2의 보수법에서 1000 0000은 -128을 의미합니다.)

 

6. 저장장치로 이해하는 전기신호의 의미

더보기

전기 신호인 0과 1은 어떻게 사라지지 않고 저장될까요? 그리고 왜 하드디스크 용량과 인터넷 속도는 단위가 다를까요? 저장장치의 역사를 통해 그 답을 찾아봅시다.

6.1 Data Unit : 2진수와 근사값의 비밀

컴퓨터의 저장 용량은 Byte(8 bits)를 기준 단위로 사용합니다. 그런데 여기서 인간(10진수)과 컴퓨터(2진수)의 셈법 차이로 인해 재미있는 현상이 발생합니다.

📉 왜 내 하드디스크 용량은 표기보다 작을까?

제조사는 10진수(1000) 기준으로 500GB를 만들지만, 윈도우(컴퓨터)는 2진수(1024)로 나누어 계산합니다.
결국 500GB 하드디스크를 꽂으면 약 465GB로 인식되는 이유는 이 '단위의 오차' 때문입니다.

6.2 Storage History : 0과 1을 가두는 방법

저장장치의 역사는 "어떻게 하면 0과 1을 더 작고, 더 많이, 더 오래 보관할까?"에 대한 도전이었습니다.

▲ 데이터 저장장치의 역사 (History of Data Storage)
타공 있으면 1, 없으면 0 을 표시
Magnetic Storage (자기테이프, 하드디스크)
SSD

방식0과 1의 기록 원리

① Punched Card
(천공카드)
물리적 구멍:
🕳 구멍 있음 = 1
📄 구멍 없음 = 0
② Magnetic Storage
(HDD, 자기테이프)
자석의 극성 (N극/S극):
자석 입자의 정렬 방향이 바뀌면 1, 그대로면 0으로 인식합니다.
(전기가 없어도 자석의 성질은 유지됨)
③ SSD
(Flash Memory)
전자의 포획:
'셀(Cell)'이라는 방에 전자를 가두어 전압을 조절합니다.
전자가 차 있으면 0, 비어 있으면 1 (방식에 따라 다름)

6.3 Network Speed

"기가 인터넷(1Gbps)을 신청했는데, 왜 다운로드 속도는 100MB/s 밖에 안 나오죠?"

이것은 저장할 때와 전송할 때 사용하는 단위의 기준이 다르기 때문입니다.

  • 저장 장치 (Storage): Byte (B) 단위 사용 (8 bit 묶음)
  • 네트워크 속도 (Network): bit (b) 단위 사용 (bps = bit per second)

⚡ 8배의 법칙

1 Byte = 8 bits

따라서 통신사에서 말하는 속도를 8로 나누어야
우리가 실제로 체감하는 파일 저장 속도(MB/s)가 됩니다.


예시: 100Mbps 인터넷

100 ÷ 8 = 12.5 MB/s (초당 12.5메가바이트 전송)

 

7. 컴퓨터 하드웨어, 좀 더 알아보기

더보기

백문이 불여일견입니다. 지금까지 글로 배운 '전기 신호'와 '0과 1'이 실제 하드웨어 내부에서 어떻게 작동하는지, 고품질 3D 애니메이션을 통해 눈으로 직접 확인해 봅시다.

📢 시청 팁

아래 영상들은 영어로 되어 있습니다. 유튜브 자막 설정을 [설정 ⚙️] ➡ [자막] ➡ [자동 번역] ➡ [한국어]로 변경하고 시청하세요.

7.1 컴퓨터 하드웨어의 내부 구조 (3D Teardown)

컴퓨터 케이스를 열면 무엇이 있을까요? CPU, GPU, 램, 파워서플라이 등 각 부품이 어떻게 연결되어 하나의 시스템으로 작동하는지 전체적인 흐름을 보여줍니다.

7.2 컴퓨터 하드웨어 사이즈 비교 (Nano World)

우리가 다루는 '비트(Bit)'를 처리하는 트랜지스터는 얼마나 작을까요? 컴퓨터 부품을 나노미터(nm) 단위까지 확대하여, 수십억 개의 스위치가 집적된 경이로운 세계를 탐험합니다.

7.3 메모리(RAM)는 어떻게 동작하는가?

램(RAM)은 전기가 끊어지면 데이터가 사라지는 '휘발성 메모리'입니다. 미세한 커패시터(Capacitor)와 트랜지스터가 어떻게 0과 1을 임시로 붙잡아두는지 확인해 봅시다.

7.4 하드디스크(HDD)는 어떻게 동작하는가?

자석의 N극과 S극을 이용해 0과 1을 기록하는 기계적인 장치입니다. 고속으로 회전하는 플래터 위에서 헤드가 어떻게 데이터를 읽고 쓰는지 3D로 생생하게 보여줍니다.

7.5 SSD는 어떻게 동작하는가?

HDD와 달리 움직이는 부품이 없습니다. '플로팅 게이트'라는 작은 감옥에 전자를 가두어 데이터를 저장하는 플래시 메모리(Flash Memory)의 놀라운 기술을 소개합니다.

7.6 PCB(인쇄회로기판)는 어떻게 동작하는가?

초록색 판(마더보드) 위에 그려진 수많은 금색 선들은 전기가 이동하는 고속도로(Bus)입니다. 0과 1의 신호들이 서로 간섭하지 않고 정확하게 목적지로 이동하는 원리를 보여줍니다.