코딩

챕터 1-10 : ASCII

story98138 2026. 2. 24. 18:05

🗺️ 수업 목표

  • **인코딩(Encoding)**과 **디코딩(Decoding)**의 개념을 이해한다.
  • 문자를 숫자로 변환하는 규약인 ASCII에 대해 배운다.

📚 1. 컴퓨터는 문자를 모른다?

우리는 char 변수에 문자를 담는다고 생각하지만, 사실 컴퓨터는 문자를 직접 저장할 수 없습니다.

  • 소스코드는 컴파일 과정을 통해 **이진 패턴(0과 1)**으로 변환됩니다.
  • 따라서 문자를 저장하기 위해서는 문자를 특정 숫자와 매칭시키는 '약속'이 필요합니다.

📚 2. 인코딩(Encoding) vs 디코딩(Decoding)

데이터의 형태를 바꾸는 과정을 말합니다.

  • 인코딩: 형태 A(문자) → 형태 B(숫자/이진 데이터)
  • 디코딩: 형태 B(숫자/이진 데이터) → 형태 A(문자)

📚 3. ASCII (아스키 코드)

미국 국립 표준 협회(ANSI)에서 정한 문자 인코딩 규약입니다. 가장 기본이 되며, 모든 문자는 특정 정수 값(0~127)에 대응됩니다.

  • 예: 대문자 'A'는 숫자 65, 문자 '0'은 숫자 48에 해당합니다.

💡 Ex011001) ASCII 테스트

문자에 숫자를 더하면 어떻게 될까요? ASCII 값을 기준으로 계산이 수행됩니다.

C
 
#include <stdio.h>

int main(void)
{
    char ch1 = 'A'; // 내부적으로 65 저장
    char ch2 = '1'; // 내부적으로 49 저장

    printf("ch1 = %c\n", ch1);      // 출력: A
    printf("ch1 = %d\n", ch1);      // 출력: 65
    printf("ch1 + 2 = %c\n", ch1 + 2); // 65 + 2 = 67 ('C')
    printf("ch1 + 2 = %d\n", ch1 + 2); // 출력: 67

    printf("ch2 = %c\n", ch2);      // 출력: 1
    printf("ch2 = %d\n", ch2);      // 출력: 49
    
    // 'A'(65) + 24 = 89 ('Y')
    printf("'A' + 24 = %c\n", 'A' + 24); // 출력: Y
    printf("'A' + 24 = %d\n", 'A' + 24); // 출력: 89

    return 0;
}

📚 4. 전 세계의 공통 언어: 유니코드(Unicode)

과거에는 지역마다 인코딩 방식(ASCII, EUC-KR 등)이 달라 글자가 깨지는 현상이 잦았습니다. 이를 해결하기 위해 전 세계 모든 문자를 하나로 통합한 것이 유니코드입니다.

  • 종류: UTF-8, UTF-16, UTF-32 등
  • 현재 웹과 소프트웨어 개발에서 가장 널리 쓰이는 표준입니다.