Language/C

📌 Chapter 03 - 표준 입출력 함수 - 문자 코드

e-cko 2025. 5. 16. 11:51
반응형
반응형

3. 문자 코드

1) 문자 인코딩의 기본 개념

1-1) 아스키 코드 (ASCII, American Standard Code for Information Interchange)

  • 아스키 코드는 미국 ANSI(American National Standards Institute)에서 제정한 문자 인코딩 표준이다.
  • 컴퓨터숫자이해할 수 있으므로, 문자숫자표현하는 방식이 필요하다. 아스키 코드는 바로 이 목적을 위해 사용된다.
  • 모든 문자를 고유한 숫자 값으로 매핑하여, 사람이 입력한 문자컴퓨터가 이해할 수 있는 숫자로 변환한다.

주요 연도별 변화
1️
1967: 최초로 128개 문자(숫자, 알파벳, 기호 등)를 정의한 아스키 표준이 만들어졌다.
2️
1986: 여기에 선 그리기 문자, 그래픽 문자 등을 포함한 확장 아스키 코드(256)가 제정되었다.

⚠️ 그러나 C 언어에서는 기본 아스키 코드 128만 사용한다.
⛏️ 이유: C 언어는 시스템 프로그래밍 언어로, 하드웨어와의 효율적인 통신을 위해 단순하고 범용적인 문자 세트를 사용한다.

 

2) 아스키 코드의 특징과 메모리 구조

  • 아스키 코드는 부호를 사용하지 않는다.
    , 0~127까지의 양의 정수만 사용한다.
  • 하나의 문자는 항상 1바이트(8비트) 공간에 저장된다.
    하지만 실제 사용되는 값은 0~127이므로, 상위 1비트는 사용되지 않는다.
  • 문자와 숫자는 서로 암호처럼 매칭된다.
    예를 들어, A 65, a 97, 0 48이다.
  • 문자 자료형(char)은 내부적으로 숫자로 처리된다.

문자 출력 시 %c 서식 지정자를 사용하면, 해당 숫자에 매핑된 문자가 출력된다.
반대로 %d 또는 %d를 쓰면, 문자에 해당하는 숫자(아스키 값)가 출력된다.

 

3) 아스키 코드 표 (0~127)

10진수 16진수 문자 10진수 16진수 문자
0 0x00 NUL 64 0x40 @
1 0x01 SOH 65 0x41 A
2 0x02 STX 66 0x42 B
3 0x03 ETX 67 0x43 C
4 0x04 EOT 68 0x44 D
5 0x05 ENQ 69 0x45 E
6 0x06 ACK 70 0x46 F
7 0x07 BEL 71 0x47 G
8 0x08 BS 72 0x48 H
9 0x09 TAB 73 0x49 I
10 0x0A LF 74 0x4A J
11 0x0B VT 75 0x4B K
12 0x0C FF 76 0x4C L
13 0x0D CR 77 0x4D M
14 0x0E SO 78 0x4E N
15 0x0F SI 79 0x4F O
16 0x10 DLE 80 0x50 P
17 0x11 DC1 81 0x51 Q
18 0x12 DC2 82 0x52 R
19 0x13 DC3 83 0x53 S
20 0x14 DC4 84 0x54 T
21 0x15 NAK 85 0x55 U
22 0x16 SYN 86 0x56 V
23 0x17 ETB 87 0x57 W
24 0x18 CAN 88 0x58 X
25 0x19 EM 89 0x59 Y
26 0x1A SUB 90 0x5A Z
27 0x1B ESC 91 0x5B [
28 0x1C FS 92 0x5C \
29 0x1D GS 93 0x5D ]
30 0x1E RS 94 0x5E ^
31 0x1F US 95 0x5F _
32 0x20 (공백) 96 0x60 `
33 0x21 ! 97 0x61 a
34 0x22 " 98 0x62 b
35 0x23 # 99 0x63 c
36 0x24 $ 100 0x64 d
37 0x25 % 101 0x65 e
38 0x26 & 102 0x66 f
39 0x27 ' 103 0x67 g
40 0x28 ( 104 0x68 h
41 0x29 ) 105 0x69 i
42 0x2A * 106 0x6A j
43 0x2B + 107 0x6B k
44 0x2C , 108 0x6C l
45 0x2D - 109 0x6D m
46 0x2E . 110 0x6E n
47 0x2F / 111 0x6F o
48 0x30 0 112 0x70 p
49 0x31 1 113 0x71 q
50 0x32 2 114 0x72 r
51 0x33 3 115 0x73 s
52 0x34 4 116 0x74 t
53 0x35 5 117 0x75 u
54 0x36 6 118 0x76 v
55 0x37 7 119 0x77 w
56 0x38 8 120 0x78 x
57 0x39 9 121 0x79 y
58 0x3A : 122 0x7A z
59 0x3B ; 123 0x7B {
60 0x3C 124 0x7C |
61 0x3D = 125 0x7D }
62 0x3E 126 0x7E ~
63 0x3F ? 127 0x7F DEL

마무리 정리

1️ 아스키 코드는 문자와 숫자를 매핑하는 문자 인코딩 방식이다.
2️
C 언어에서는 128개의 기본 아스키 코드만 사용한다.
3️
아스키 코드는 1바이트(8비트)로 구성되며, 부호 없는 정수이다.
4️
문자 출력에는 %c, 아스키 코드 출력에는 %d 서식 지정자를 사용한다.

 

 

💻 예제 코드

#include <stdio.h>

int main() {

    // 아스키 코드 65 97을 대응하는 문자로 출력

    printf("65에 해당하는 문자는: %c\n", 65);   // A 출력

    printf("97에 해당하는 문자는: %c\n", 97);   // a 출력

    return 0;

}

🖥️ 출력 결과

65에 해당하는 문자는: A 

97에 해당하는 문자는: a 


✳️ 추가 팁

  • %d를 사용하여 문자에 대응하는 숫자 출력도 가능하다.

char ch = 'A';

printf("문자 A의 아스키 값은: %d\n", ch); // 65 출력

반응형