← 홈으로

CS · 2025/08

7 + 5 = 12가 나오기까지

계산기는 숫자를 더해주는 단순한 기계처럼 보이지만, 안에는 컴퓨터 공학의 핵심 구조가 다 들어 있다.

  • 이진수
  • 논리 회로
  • 레지스터, ALU, 디코더

계산기는 컴퓨터 구조의 축소판이다.


계산기는 0과 1로 동작한다

버튼을 눌러 입력한 숫자들은 계산기 안에서 전부 0과 1로 바뀐다.

사람은 '7'이라 쓰지만, 컴퓨터는 '0111'이라는 코드로 기억한다. 계산기는 숫자를 코드로 바꾸고, 그걸 처리해서 다시 사람이 이해할 수 있는 숫자로 출력한다.

7은 어떻게 0111이 되나?

  • 2³ × 0 = 0
  • 2² × 1 = 4
  • 2¹ × 1 = 2
  • 2⁰ × 1 = 1
  • 4 + 2 + 1 = 7

이렇게 변환된 이진수는 논리 연산 회로에서 본격적으로 계산에 사용된다.

왜 0과 1인가?

계산기와 컴퓨터는 전기로 동작한다. 전류가 흐르면 '켜짐(ON)', 흐르지 않으면 '꺼짐(OFF)'이다.

상태의미
전류 흐름 O1 (High)
전류 흐름 X0 (Low)

이 '켜짐(1)'과 '꺼짐(0)'이 컴퓨터의 언어인 이진수다.

0 아니면 1, 참 아니면 거짓, OFF 아니면 ON. 이 구조 덕분에 컴퓨터는 빠르고 정확하게 작동할 수 있다.


이진수 덧셈

계산기에서 3 + 2를 누르면 내부에선 아래와 같은 계산이 이뤄진다.

  0 1 1 (3)
+ 0 1 0 (2)
-------
  1 0 1 (5)

이진수 덧셈의 규칙:

  1. 0 + 0 = 0
  2. 0 + 1 = 1
  3. 1 + 0 = 1
  4. 1 + 1 = 10 (올림수 발생)

계산기는 이 규칙을 논리 회로로 구현한다. 이때 나오는 게 Half Adder(반가산기)와 Full Adder(전가산기)다.

1비트 덧셈의 시작, Half Adder

Half Adder(반가산기)는 두 개의 1비트 입력(A, B)을 받아서 합(Sum)과 올림수(Carry)를 출력한다.

Half Adder의 구조

  • 입력: A, B (각각 1비트)
  • 출력:
    • Sum
    • Carry

진리표

ABSumCarry
0000
0110
1010
1101

논리식

  • Sum = A ⊕ B (XOR)
  • Carry = A · B (AND)

Half Adder의 한계

Half Adder는 두 비트만 더할 수 있어서, 실제 여러 자리 덧셈에선 이전 자리에서 올라온 올림수를 처리할 수 없다.

예를 들어 111 + 111 같은 계산에서:

  1 1 1
+ 1 1 1
-------
  • 첫 번째 자리: 1 + 1 = 0 (올림수 1)
  • 두 번째 자리: 1 + 1 + 이전 올림수 1 = ?

Half Adder는 이 "이전에서 올라온 올림수"를 처리할 수 없다.

Half Adder 두 개로 Full Adder 만들기

Half Adder 두 개와 OR 게이트를 연결해서 이 문제를 해결한다.

올림수를 구분해서 부른다:

  • Carry-in (Cin) : 이전 자리에서 들어오는 올림수
  • Carry-out (Cout) : 다음 자리로 내보내는 올림수
  1. 첫 번째 Half Adder : A와 B를 더함
  2. 두 번째 Half Adder : 첫 번째 결과와 Carry-in(Cin) 을 더하여 Sum
  3. OR 게이트 : 두 Half Adder에서 나온 올림수들을 합쳐서 최종 Carry-out(Cout) 생성

입력 순서는 위에서부터 Cin → A → B다.

완성된 Full Adder 회로

이렇게 만든 회로가 Full Adder(전가산기) 다. A, B 외에도 이전 자리에서 올라온 Carry-in(Cin) 까지 입력으로 받아 처리한다.

Full Adder의 구조

  • 입력: A, B, Cin (각각 1비트)
  • 출력:
    • Sum
    • Cout

진리표

ABCinSumCout
00000
00110
01010
01101
10010
10101
11001
11111

논리식

  • Sum = A ⊕ B ⊕ Cin
  • Cout = (A · B) + (B · Cin) + (A · Cin)

여러 비트를 처리하려면?

계산기에서 다루는 숫자는 1비트보다 훨씬 크다. 여러 개의 Full Adder를 이어 붙여 더 큰 비트 수 연산을 처리한다.

  11001 (25)
+ 10111 (23)
--------
 110000 (48)

입력부터 출력까지

버튼을 누르면 어떤 일이 벌어지나?

숫자 7 버튼을 누르면:

  • 해당 키를 눌렀다는 전기 신호가 발생한다.
  • 내부적으로 키 매트릭스 회로가 작동해 어느 키가 눌렸는지 식별한다.
  • 이 값은 이진수(7 → 0111)로 변환되어 연산을 위해 레지스터에 저장된다.

이 시점부터 계산기는 오직 0과 1만으로 작동한다. 모든 정보는 전류가 흐르는가(1) 아닌가(0)로 표현된다.

계산의 핵심 (ALU, Arithmetic Logic Unit)

입력된 숫자들이 준비되면, 계산기의 ALU가 작동한다. ALU는 실제 연산을 담당하는 컴퓨터 내부 부품으로, 내부에서는 Full Adder 회로를 통해 자릿수별 연산이 진행된다.

ALU의 동작 방식

  • A, B (피연산자) : 계산할 두 숫자가 입력된다 (예: 7과 5)
  • Opcode (연산 코드) : 어떤 연산을 할지 결정한다 (덧셈, 뺄셈, 곱셈 등)
  • Status : 연산 상태 정보 (오버플로우, 결과가 0인지 등)
  • Y (결과) : 계산된 최종 결과가 출력된다 (예: 12)

7 + 5의 경우:

  • A와 B에 7 (0111)과 5 (0101)가 입력된다.
  • Opcode에 덧셈 명령이 들어온다.
  • ALU 내부의 Full Adder 회로들이 자릿수별로 덧셈을 수행한다.
  • Y에서 12 (1100) 결과가 출력된다.

ALU는 계산기의 두뇌다. CPU에도 이 ALU가 포함되어 있고, 계산기의 ALU는 그 축소판이다.

결과는 어떻게 보여주나?

계산 결과는 다시 십진수로 변환되어 디스플레이에 출력된다.

  • 이진수 → BCD(Binary-Coded Decimal) 변환
  • BCD → 7-Segment Decoder를 통해 LED/LCD 디스플레이 제어
  • 결과적으로 '12', '-3' 등 사람이 읽을 수 있는 숫자 형태로 출력

이 단계는 단순한 변환이 아니라, 전기 신호 → 문자 코드 → 시각 정보로 바꾸는 복잡한 흐름이다.


7 + 5를 누르는 순간, 이진수 변환이 일어나고, 논리 회로가 자릿수별로 덧셈을 처리하고, BCD로 다시 변환되어 화면에 12가 찍힌다.

계산기 안에는 컴퓨터 구조 교과서가 통째로 들어 있다.