EP.2-1 변수와 사칙연산

EP.2-1 변수와 사칙연산: 데이터의 흐름 만들기 | 제어 엔지니어 구조 분석

Phase 2: Operations & Control Logic

EP.2-1 변수와 사칙연산 — 데이터의 흐름 만들기

메모리 예약부터 ALU의 물리적 연산까지

변수 선언: 메모리에 이름표 붙이기

PLC에서 D100이라는 주소를 직접 지정하듯, C언어에서는 int a;처럼 이름을 붙입니다. 이것은 메모리라는 거대한 창고에 '내 구역'을 확보하고 그릇의 크기를 정하는 행위입니다.

사칙연산: ALU(산술논리장치) 가동하기

CPU 내부의 ALU는 우리가 입력한 연산자(+, -, *, /)를 보고 전기 신호를 처리합니다. PLC의 ADD, SUB 명령어가 C언어에서는 간결한 기호로 대체됩니다.

  • + (더하기), - (빼기): ALU 내부의 가산기 회로를 통과합니다.
  • * (곱하기), / (나누기): 복잡한 논리 회로를 반복 통과하며 CPU 부하가 상대적으로 큽니다.
  • % (나머지): 나눗셈 후 남은 레지스터 값을 낚아챕니다. 순환 제어에 필수적입니다.
#include <stdio.h>
int main() {
    int input = 7;
    int divider = 3;

    printf("--- 산술 연산 결과 보고서 --- \n");
    printf("더하기: %d \n", input + divider);
    printf("나눗셈의 몫(/): %d \n", input / divider);
    printf("나눗셈의 나머지(%%): %d \n", input % divider);
    printf("--------------------------- \n");

    return 0;
}

▲ 7을 3으로 나눴을 때 몫(2)과 나머지(1)가 각각 출력되는 화면

💡 몫(/)과 나머지(%)의 물리적 분리

코드를 실행하면 7 / 32를, 7 % 31을 출력합니다. CPU는 단 한 번의 나눗셈으로 두 결과를 모두 계산해 놓았고, 우리는 연산자를 통해 필요한 레지스터 값을 선택해서 가져온 것입니다.

정리 & 복습: "설계된 전압의 폭포"

키보드를 입력하는 행위는 설계입니다. 이 설계도면(기계어)은 메모리에 저장되며, 어떤 ALU 연산자를 사용할지 경로를 미리 정해놓습니다.

  1. 설계 단계: 컴파일된 이진수들이 트랜지스터의 Base 단자에 각각 자리하게 됩니다.
  2. 연산 단계: 실행 시 이진수 신호들이 논리 게이트 미로를 전광석화처럼 통과하여 출력값을 뱉어냅니다.
  3. 출력 단계: CPU의 출력값에 맞춰 GPU가 픽셀 좌표를 빠르게 연산하고, 모니터의 3색(RGB) LED를 깨웁니다.
트랜지스터 구조 및 원리 보러가기 ▷▶▷▶EP.1-1 트랜지스터

오버플로우와 2의 보수 검증

8비트 그릇(char)에 담긴 127에 1을 더하면 어떤 일이 벌어질까요? 물리적 한계를 시험해 봅니다.

#include <stdio.h> // # 삽입 필수!

int main() {
    signed char cup = 127; // 0111 1111
    printf("현재 값: %d \n", cup); // ; 종결 필수!

    cup = cup + 1; // 1000 0000 (오버플로우 발생)
    printf("1을 더한 후 결과: %d \n", cup);
    return 0;
}

결과는 128이 아닌 -128입니다. 최상위 비트가 뒤집히며 부호가 변하는 하드웨어적 특성을 직접 확인한 순간입니다.

🚨 트러블슈팅: 한글 깨짐(외계어) 해결책

▲ 한글 깨짐(외계어) 출력되는 화면

출력 결과가 외계어로 나온다면 소스 파일과 콘솔의 인코딩 규격이 맞지 않는 것입니다. 다음 4단계를 통해 '코드 페이지 949'로 물리적 변환을 수행하십시오.

  • [저장] 버튼 옆의 작은 화살표(▼) 클릭 → [인코딩하여 저장(V)...] 선택
  • 기존 파일 덮어쓰기 [예] 클릭
  • 목록에서 [한국어 - 코드 페이지 949] 선택 후 [확인]
  • ▲ 상단 메뉴 [파일(F)][다른 이름으로 저장(A)...] 클릭

    ▲ [저장] 버튼 옆의 작은 화살표(▼) 클릭 → [인코딩하여 저장(V)...] 선택→기존 파일 덮어쓰기 [예] 클릭

    ▲ 목록에서 [한국어 - 코드 페이지 949] 선택 후 [확인]

    © 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
    "소프트웨어는 가장 효율적으로 설계된 추상화된 회로다."

    댓글

    이 블로그의 인기 게시물

    EP.0 코딩의 첫걸음 — 전기를 어떻게 연결할 것인가?

    EP.0-1 천공카드

    EP.1-1트랜지스터